当在where子句中使用等于或大于时,Mysql对大数据集的性能是否存在差异。
出于相同的目的,我可以运行以下两个查询。
select * from My_Table where MY_Field > 100; // 100是旧值
或
select * from MY_Table where MY_Field = 101; 如果大于100则为101,这是My_Field的已知值。
有什么建议吗?
发布于 2011-01-21 07:54:03
如果MY_Field被索引所覆盖,那么在索引中搜索值的差异并不大。这是正确的,直到结果集大约是表中总行数的30%。
但是,对于在索引中找到的每个记录,mysql需要在数据文件上执行查找以找到适当的行(因为您有SELECT *)。
因此-在您的情况下,如果您知道特定的字段值,那么使用=一定会更好。
发布于 2011-01-21 07:59:46
取决于此特定列上的索引类型: BTREE在搜索范围时很好,散列在搜索等式时很好
发布于 2011-01-21 12:13:56
如果您知道只会使用LIMIT 1读取一个结果,则可以优化查询
select * from MY_Table where MY_Field = 101 LIMIT 1;在执行时,如果找到单行匹配结果,mysql将停止执行,哪一个更好
https://stackoverflow.com/questions/4753955
复制相似问题