我正在使用 mysql,我的表类型是 myisam,有 1 亿条记录。
此表有 90 列,并在 30 列上添加了索引。
我运行这个查询“select id from tablename where id between num1 and num2”。这导致将近 10 秒。
现在我在 where 条件日期中添加,例如“从表名中选择 id,其中 id 在 num1 和 num2 之间,日期在 date1 和 date2 之间”。它会在 4 分钟内产生结果。
“日期”字段也被编入索引。
在第一种情况下,在 Explain 中,它在“extra”列中显示“using index”,而在第二种情况下,在 Explain 中,它在“extra”列中显示“using where”。
我不明白 Explain 不同行为的原因,以及查询时间的差异。
请任何人向我解释这些,以便我可以在优化查询的正确方向上工作。
最佳答案
是否有一个索引同时包含 id
和 date
这两个列?如果没有,请创建一个。当索引与 where
条件紧密匹配(或者:将您的 where
条件与您的索引匹配)时,索引的使用效率最高。
如果您在 id
列上有索引并且 where
子句仅使用该列,则可以有效地使用该索引。
如果where
条件中有两列,没有找到匹配的索引,则执行全表扫描。
关于mysql - 为什么解释在索引列上显示 'using where' 而不是 'using index'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18717583/