需求说明
产品需要统计一段时间范围内每月用户的注册人数(根据用户信息表中的创建时间),需要我通过SQL导出数据,但是数据量太大,导出需要20多秒,于是我尝试在创建时间字段中加索引,但是发现加了索引后索引失效了,通过limit限制数量后索引才生效。
实战操作
无索引时查询的时间26秒多和记录数量为10万+
创建时间字段加索引
加索引后发现还是很慢,于是通过EXPLAIN命令查看执行情况,发现还是全表扫描,没有使用索引。
通过LIMIT限制数量后再EXPALIN查看执行命令
总结
随着表的增长,where条件出来的数据太多可能会使得索引失效(会导致CBO优化器计算走索引花费大于走全表)