什么是步行指数?

select id,c2 from simple_table where date(c2) = '2022-01-01';

与第一个不同的是,这个 SQL 只返回了一些列,而这些列都在索引中。然后我们分析这条SQL的执行计划,判断是否可以通过索引:

在上图中,可以清楚的看到键值就是索引。

这里很奇怪,不是说对条件字段的函数操作会使索引失效,为什么索引又没了?

这是我在学习时遇到的问题,后来发现是因为没有搞清楚“走指数”是什么意思。大家都知道索引可以加速查询,但是你知道为什么索引可以加速查询吗?答案是减少查询次数。

现在我们回到上面的SQL,可以看到虽然key值是,但是rows值是1000。也就是scan扫描全表,也就是所有记录。但是因为所有需要查询的列都已经包含了,所以优化器选择走这个索引。

最后我们想一个问题,使用索引就一定要快吗?我们通过一个具体的例子来看看这个问题:

select * from simple_table;
select * from simple_table where id > 0;

可以看到,第一条 SQL 没有经过分析直接肉眼观察没有索引,第二条 SQL 使用了主键索引。可以看出不使用索引的速度更快,因为虽然使用了索引,但是从主键索引最左边的叶子节点开始向右扫描整个索引树,进行全表扫描,这使得索引毫无意义。.

综上所述:查询是否使用索引仅表示SQL语句的执行过程;而是否是慢查询是由它的执行时间决定的,也就是说,是否使用索引是慢查询。接触。我们在使用索引的时候,不仅要关注它是否有效,还要关注索引是否减少了查询扫描的数据行数,从而提高了扫描行的效率。对于大表,不仅要创建索引,还要考虑索引的可过滤性。如果过滤性好,执行速度会更快。

© 版权声明
THE END
喜欢就支持一下吧
点赞228 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片