相关疑难解决方法(0)

SQL WHERE子句中的IN vs OR

在处理性能更好的大型数据库时,IN还是OR在SQL Where-clause中?

他们的执行方式有什么不同吗?

sql database

146
推荐指数
4
解决办法
11万
查看次数

MySQL"IN"运算符的性能(大?)数值

我最近一直在试验Redis和MongoDB,看起来通常情况下你会在MongoDB或Redis中存储一组id.因为我在询问MySQL IN运算符,所以我会坚持使用Redis来解决这个问题.

我想知道在IN运算符中列出大量(300-3000)id的性能如何,看起来像这样:

SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
Run Code Online (Sandbox Code Playgroud)

想象一下像产品类别表这样简单的东西,你通常可以将它们加在一起以获得某个类别产品.在上面的示例中,您可以看到在Redis()中的给定类别下,我返回ID为4的类别中的所有产品ID,并将它们放在运算符内的上述查询中.category:4:product_idsSELECTIN

这是多么高效?

这是"依赖"的情况吗?或者是否有一个具体的"这是(不)可接受的"或"快速"或"慢"或者我应该添加LIMIT 25,还是没有帮助?

SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 3000)
LIMIT 25
Run Code Online (Sandbox Code Playgroud)

或者我应该修剪Redis返回的产品ID数组,将其限制为25,并且只将25个id添加到查询而不是3000并且LIMIT从查询内部将其添加到25?

SELECT id, name, price
FROM products
WHERE id IN (1, 2, 3, 4, ...... 25)
Run Code Online (Sandbox Code Playgroud)

任何建议/反馈非常感谢!

mysql sql performance operators

79
推荐指数
5
解决办法
4万
查看次数

标签 统计

sql ×2

database ×1

mysql ×1

operators ×1

performance ×1