我一直在阅读,MySQL 在使用 IN() 语句的查询中存在问题 - 有时无法使用索引。如果我不使用子查询,真的是这样吗?
哪种方法更好?有性能差异吗?
1
SELECT *
FORM `somewhere`
WHERE
`id` = 3
OR `id` = 5
OR `id` = 15
OR `id` = 56
OR `id` = 34
OR `id` = 47
2
SELECT *
FORM `somewhere`
WHERE
`id` IN (3,5,15,56,34,47)
最佳答案
第二种方法更好。 MySQL 可以对此进行优化。
MySQL has a problem with queries that use IN() statement - sometimes indexes can't be used. Is that really so, if I don't use a subquery?
当您编写 IN(SELECT ...)
时,IN 可能会出现问题,但我认为简单的值列表不会出现问题。
关于MySQL 查询优化 : IN() vs OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4286403/