关于mysql索引的问题

本文探讨了SQL查询中索引的使用,特别是在时间范围查询时,`BETWEEN`与`>`和`<`操作符的影响。尽管索引通常能提高查询效率,但当时间范围过大时,数据库可能会选择全表扫描。理解何时会进行全表扫描以及如何优化查询对于数据库性能至关重要。链接文章提供了深入分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先提出一个问题
有表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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coffey强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值