我最近一直在试验Redis和MongoDB,似乎经常会有这样的情况,你会在MongoDB或Redis中存储id的数组。我将继续使用Redis来回答这个问题,因为我问的是MySQL IN操作符。
我想知道在IN操作符中列出大量(300-3000) id的的性能如何,它看起来像这样:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
想象一下像products和categories表这样简单的东西,您通常可以将这两个表连接在一起,以从某个类别获得products。在上面的示例中,您可以看到在Redis ( category:4:product_ids
)中的给定类别下,我返回了id为4的类别中的所有产品id,并将它们放在上面的SELECT
查询中的IN
操作符中。
它的性能如何?
这是一个“视情况而定”的情况吗?或者是否有一个具体的“这是(不)可接受的”或者“快”或“慢”,或者我应该添加一个LIMIT 25
,或者这没有帮助吗?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
或者我是否应该修剪Redis返回的产品id数组,将其限制为25,并在查询中仅添加25个id,而不是3000,并从查询内部将其LIMIT
-ing为25?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
任何建议/反馈都是非常感谢的!
https://stackoverflow.com/questions/4514697
复制相似问题