MySQL是否优化WHERE x> = 0 AND x< = 0进入WHERE x = 0?

时间:2016-02-29 16:27:15

标签: mysql

我对MySQL很新,在项目中我生成MySQL请求,其中一个值可以是不同的预定义范围,一个特殊范围只由值0

我想知道,如果我需要处理这种特殊情况或只是做

BETWEEN 0 AND 0让MySQL优化它

请求的解释

EXPLAIN SELECT SUM(*) FROM my_table WHERE field = 0

EXPLAIN SELECT SUM(*) FROM my_table WHERE field BETWEEN 0 AND 0

EXPLAIN SELECT SUM(*) FROM my_table WHERE field BETWEEN 0 AND 10

都给出了相同的解释结果

3 个答案:

答案 0 :(得分:1)

相同的计划,相同的优化。不,除非你能证明你需要,否则不要处理这样的细节。

即使一种形式比另一种形式贵20毫秒,是否真的值得为难以理解的漏洞添加一条途径来渗透?

答案 1 :(得分:1)

解释取决于数据的分布。 假设你有数百万行和一个独特的字段索引。 在这种情况下,您的解释将显示索引搜索或范围扫描,具体取决于WHERE中的条件。

您可能在数据库中只有几行,因此对于所有行或WHERE条件的解释都相同,返回超过30%的所有行,以便优化程序在所有情况下都决定进行表扫描。

答案 2 :(得分:0)

只需使用这种方式:

EXPLAIN SELECT SUM(*) FROM my_table WHERE field = 0

让MySQL负责其余部分:)