MySql教程

MySQL查询不走理想索引

本文主要是介绍MySQL查询不走理想索引,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

sql形为

select ... where a=xx order by b limit c
# 在字段a和字段b上均设置了索引

执行时可能由于MySQL选择的索引不符合预期导致慢查询
理想情况是查询时选用where筛选字段相关的索引加速,即选用和字段a 相关的索引,但实际查询时mysql选用了和字段b 相关的索引

原因是:

  • mysql优化器认为如果不走b字段索引,在查询出结果后还需要排序,而走b字段索引只需要顺序扫描,且扫到满足limit c就行了,效率比选取其他索引高,所以选择了b索引而不是理想的a索引
  • 如果字段b没有索引,不会出现上述情况
  • 如果没有limit关键字,也不会出现上面的情况。

这种问题较为隐蔽,不太容易在编写sql时注意到,所以在大表中写查询语句时最好去提前用explain执行看一下是不是符合预期

这篇关于MySQL查询不走理想索引的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!