Mysql等于vs大于(小于)性能差异

时间:2011-01-20 23:42:41

标签: mysql sql

使用等于或大于where子句时,大数据集的Mysql是否存在性能差异。

为了同样的目的,我可以运行以下两个查询。

select * from My_Table where MY_Field > 100; // 100是旧值

select * from MY_Table where MY_Field = 101; 

如果大于100,则知道My_Field的值为101。

任何建议?

4 个答案:

答案 0 :(得分:3)

如果MY_Field被索引覆盖,那么索引中搜索值的差异就不大了。在结果集大约占表中行总数的30%之前,这是正确的。

但是,对于索引mysql中找到的每条记录,需要对数据文件执行搜索才能找到合适的行(因为你有SELECT *)。

所以 - 在你的情况下,如果你知道具体的字段值,最好使用=

答案 1 :(得分:0)

取决于此特定列的索引类型:BTREE在搜索范围时很好,当您搜索等式时HASH很好

答案 2 :(得分:0)

如果您只知道要获取一个结果,则可以优化查询使用LIMIT 1

select * from MY_Table where MY_Field = 101 LIMIT 1;

哪个更好,因为在执行时如果找到单行匹配结果,mysql将停止执行

答案 3 :(得分:0)

更好地使用MY_Field = 101因为mysql将执行ref访问类型,这意味着索引将与参考值进行比较,这比range MY_Field > 100更快,这意味着mysql将比较索引中的范围值。

您可以在type的{​​{1}}字段中查看该信息。