首页 > 数据库技术 > 详细

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

时间:2017-12-09 11:43:07      阅读:717      评论:0      收藏:0      [点我收藏+]

标签:超过   route   扫描   一个   har   out   aid   nbsp   效果   

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 日期索引 索引问题-日期索引使用

标签:超过   route   扫描   一个   har   out   aid   nbsp   效果   

原文:http://www.cnblogs.com/achengmu/p/8010777.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号