Mysql时间范围查询不走索引问题

Posted 程序新视界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql时间范围查询不走索引问题相关的知识,希望对你有一定的参考价值。

使用mysql进行数据查询时,如果在SQL语句中出现范围查询,类似如下语句:

select * from logs where create_time >= '2020-01-01' ;

此时,虽然在create_time字段上添加了索引,但是否会走索引还需要看数据量的情况。

如果根据查询条件查询到数据的结果数量小于总数量的五分之一,则会走索引,否则会走全表扫描。

因此,在进行范围查询时,比如>、< 、>=、<=等,如果数据量过大的话where语句的条件虽然添加了索引,但也有可能会进行全表扫描。所以,在查询时查询的范围要考虑进行限制或其他方式进行拆分。

当然,上面的五分之一只是一个大概的临界值,不同的场景,不同的数据量,该值可能会更小,比如10%以下。

博主简介:《SpringBoot技术内幕》技术图书作者,酷爱钻研技术,写技术干货文章。

公众号:「程序新视界」,博主的公众号,欢迎关注~

技术交流:请联系博主微信号:zhuan2quan


程序新视界”,一个100%技术干货的公众号

以上是关于Mysql时间范围查询不走索引问题的主要内容,如果未能解决你的问题,请参考以下文章

MySQLMySQL索引调优范围排序索引设计原则

Mysql查询in语句都走索引吗

mysql like 不走索引怎么办

MySQL使用">="或"<="范围查询时不走索引

Mysql查询条件为大于时,不走索引失效问题排查

Mysql查询条件为大于时,不走索引失效问题排查