我想知道以下之间的性能是否有任何区别
SELECT ... FROM ... WHERE someFIELD IN(1,2,3,4) SELECT ... FROM ... WHERE someFIELD between 0 AND 5 SELECT ... FROM ... WHERE someFIELD = 1 OR someFIELD = 2 OR someFIELD = 3 ...
还是 MySQL 会以与编译器优化代码相同的方式优化 SQL?
编辑:出于评论中所述的原因,将 ‘s 更改为AND‘s 。OR
AND
OR
接受的答案没有解释原因。
以下引自高性能 MySQL,第 3 版。
在许多数据库服务器中,IN() 只是多个 OR 子句的同义词,因为两者在逻辑上是等价的。在 MySQL 中并非如此,它对 IN() 列表中的值进行排序并使用快速二进制搜索来查看值是否在列表中。这是列表大小的 O(Log n),而等效的一系列 OR 子句是列表大小的 O(n)(即,对于大型列表来说要慢得多)