首先提出一个问题
有表A 字段create_time(此字段有索引)
这几个语句 哪个会走索引
select * from A where create_time between '' and ''
select * from A where create_time >'' and create_time <''
SELECT * FROM A WHERE TO_DAYS(create_time) = TO_DAYS(NOW());
SELECT * FROM A WHERE create_time=''
答案是:第三种肯定不走
第四个肯定走
前两个不一定走 为啥不一定 读者可以尝试将时间范围足够大 这样就不会走索引了 而是全表扫描
和between还是大于小于号没关系
至于为什么会是这个效果 就要看下图了,虽然索引是在innodb中,但引擎本身并不能分析全表扫描代价大还是走索引代价大
也可以看看这篇文章的分析
https://blog.csdn.net/No_Game_No_Life_/article/details/106630197