我对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
都给出了相同的解释结果
答案 0 :(得分:1)
相同的计划,相同的优化。不,除非你能证明你需要,否则不要处理这样的细节。
即使一种形式比另一种形式贵20毫秒,是否真的值得为难以理解的漏洞添加一条途径来渗透?
答案 1 :(得分:1)
解释取决于数据的分布。 假设你有数百万行和一个独特的字段索引。 在这种情况下,您的解释将显示索引搜索或范围扫描,具体取决于WHERE中的条件。
您可能在数据库中只有几行,因此对于所有行或WHERE条件的解释都相同,返回超过30%的所有行,以便优化程序在所有情况下都决定进行表扫描。
答案 2 :(得分:0)
只需使用这种方式:
EXPLAIN SELECT SUM(*) FROM my_table WHERE field = 0
让MySQL负责其余部分:)