最近我一直在尝试使用Redis和MongoDB,似乎经常需要将一个id数组存储在MongoDB或Redis中。在这个问题中,我将专注于Redis,因为我正在询问MySQL的 IN 运算符。
我想知道在IN运算符中列出大量(300-3000)的 id 对性能的影响如何,它看起来像这样:
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
想象一下一个简单的产品和类别表,通常可以将它们JOIN在一起以获取某个类别下的产品。在上面的示例中,您可以看到在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个ID添加到查询中并在查询内部使用LIMIT
限制它为25吗?
SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
非常感谢任何建议或反馈!