MySql放弃索引问题

表名-->oa_attend使用的索引 i_oa_create_time 索引类型:Normal  索引方法:BTREE

当一个表的数据过大时,所查询的数据占用整个表的数据1/10时,查询的语句就会放弃索引,进行全表扫描。

1/10这个数据是我自己测出来的,当时表的总数据是 -->2546518,测了好几个表,大概就不到1/10,

解决方案-->让SQL强制走索引
 

select * from oa_attend oa
  FORCE index(i_oa_create_time)
where oa.create_time >= '2018-10-01 00:00:00' and oa.create_time<='2018-11-14 00:00:00'
;

select * from oa_attend oa 
FORCE index(i_oa_create_time)
where oa.create_time BETWEEN '2018-10-01 00:00:00' and '2018-11-14 00:00:00'

真正写到项目的时候,需要对特殊字符做处理,如:<=,>=等

你可能感兴趣的:(mysql)