mysql 时间 between查询 索引吗_Mysql: mysql between 日期索引 索引问题-日期索引使用...

本文探讨了MySQL中日期类型索引在查询优化中的局限性,尤其是在查询数据量较大时的全表扫描问题。作者发现当查询数据占总数据的五分之一以下时,索引会被利用;超过此阈值则可能不适用。解决方法包括强制使用索引。关键词包括:MySQL、日期索引、全表扫描、索引失效、查询优化。标签:mysql、日期范围、索引、全表扫描、查询效率
摘要由CSDN通过智能技术生成

Mysql: mysql between 日期索引 索引问题-日期索引使用

表结构:

dep_date

dep

arr

联合索引: ind_coll_date_route  (dep_date ,dep,arr)

这两天发现原来的查询效率慢了,使用explain 查看,居然没有使用索引,

我的索引是日期类型的,首先想到的是mysql对日期类型的索引的处理机制是不是不同,在where条件里试了几种,发现效果都差不多,

where dep_date >= ‘20161121’

where dep_date  >= ‘2016-11-21’

where dep_date  between ‘2016-11-01’ and ‘2016-11-21’

还有各种函数,最后发现结论都是一样的,在baidu上查询也没有有价值的内容。

最后发现了一些规律,但不知道是否有普遍性,即:

在查询数据条数约占总条数五分之一以下时能够使用到索引,但超过五分之一时,则使用全表扫描了。

试了多张表,均是这个结论, 所以想这个五分之一应该是在某一个地方设置的,或者是系统默认在查询优化时的一个经验值,在以后的处理的进修引起注意。

解决办法:

强制走索引

SELECT *

FROM `table_xxx`

FORCE INDEX ( ind_coll_date_route )

WHERE

dep_date

BETWEEN ‘2017-12-01‘

AND ‘2017-12-30‘

Mysql: mysql between 日期索引 索引问题-日期索引使用

标签:mysq   select   nbsp   都差不多   原来   问题   dep   plain   处理机

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/achengmu/p/8010777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值