索引失效 -- 使用Between范围查询时

需求说明

产品需要统计一段时间范围内每月用户的注册人数(根据用户信息表中的创建时间),需要我通过SQL导出数据,但是数据量太大,导出需要20多秒,于是我尝试在创建时间字段中加索引,但是发现加了索引后索引失效了,通过limit限制数量后索引才生效。

实战操作

无索引时查询的时间26秒多和记录数量为10万+

创建时间字段加索引

 

加索引后发现还是很慢,于是通过EXPLAIN命令查看执行情况,发现还是全表扫描,没有使用索引。

通过LIMIT限制数量后再EXPALIN查看执行命令

  

总结

随着表的增长,where条件出来的数据太多可能会使得索引失效(会导致CBO优化器计算走索引花费大于走全表)

原文地址:https://www.cnblogs.com/liaowenhui/p/13700896.html