在mysql中进行全表扫描

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在mysql中进行全表扫描相关的知识,希望对你有一定的参考价值。

select *from REPT_AIR_PRY_HY1 RAP where (RAP.DATE_OF_ISSUE) BETWEEN "2017-10-01" AND DATE_ADD("2017-10-31", INTERVAL 1 DAY)

这个查询的解释计划给了我337243,但这些日期之间的数据只有55209,甚至在DATE_OF_ISSUE列上创建了索引。那么,为什么要扫描整个桌子呢?提前致谢

答案

一些可能性:

  • 优化器认为(正确或错误地)需要表的非平凡百分比。表中有多少行?
  • 您正在使用MyISAM;切换到InnoDB。
  • 由于某种原因,'统计'是陈旧的。做ANALYZE TABLE

如需进一步讨论,请提供SHOW CREATE TABLE

以上是关于在mysql中进行全表扫描的主要内容,如果未能解决你的问题,请参考以下文章

在mysql中进行全表扫描

mysql 全表扫描场景

造成MySQL全表扫描的原因

mysql调优

MySQL索引优化经验总结

MySQL---sql语句优化