(八十七)大白话透彻研究通过explain命令得到的SQL执行计划(6)

文章详细介绍了SQL执行计划中的extra字段的重要性,强调它不仅显示查询方式,还涉及where条件的过滤。通过示例解释了如Usingindex表示仅使用索引完成查询,而Usingindexcondition则表明索引用于部分条件检查。文章旨在帮助读者更好地理解和优化SQL查询性能。
摘要由CSDN通过智能技术生成

这周我们继续来学习SQL语句的执行计划,通过之前的学习,大家基本上应该已经对执行计划是什么意思,代表的是你SQL语句怎么执行,有一个整体的了解了
这周我们最后三讲把SQL执行计划剩余的一些内容讲完,下周我们就可以正式进入本专栏最为核心和实用的环节了,就是深度进行SQL语句调优。

这周其实我们主要就是研究一下执行计划里的extra这个字段里的内容都是代表什么的,其实很多人可能以为extra字段是无关紧要的,其实并不是,因为除了extra字段以外的其他内容,最多就是告诉你针对你SQL里的每个表是如何查询的,用了哪个索引,查出来了多少数据,但是很多时候,往往针对一个表可不是那么简单的。

因为除了基于索引查询数据,可能同时还得基于where条件里的其他过滤条件去筛选数据,此时还会筛选出来一些数据。

这个extra里的信息可能会非常非常的多,我们不可能给大家都讲一遍,很多其实也偶尔出现,也没多大意义,大家看到了自然也明白。我们主要是给大家讲一些平时常见的,比较有用的extra信息。

比如下面的SQL语句:
EXPLAIN SELECT x1 FROM t1 WHERE x1 = ‘xxx’
可以看看他的执行计划是什么样的

±—±------------±------±-----------±-----±--------------±---------±--------±------±-----±---------±------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
±—±------------±------±-----------±-----±--------------±---------±--------±------±-----±---------±------------+
| 1 | SIMPLE | t1 | NULL | ref | index_x1 | index_x1 | 456 | const | 25 | 100.00 | Using index |
±—±------------±------±-----------±-----±--------------±---------±--------±------±-----±---------±------------+

这里我们可以看一下,这个执行计划现在什么意思,可以说是一清二楚。首先他是访问了t1表,使用的是ref访问方法,也就是基于二级索引去查找,找的是index_x1这个索引,这个索引的最大数据长度是456字节,查找的目标是一个const代表的常量值,通过索引可以查出来25条数据,经过其他条件筛选过后,最终剩下数据是100%。

好,那么我们看看extra的信息,是Using index,这是什么意思呢?其实就是说这次查询,仅仅涉及到了一个二级索引,不需要回表,因为他仅仅是查出来了x1这个字段,直接从index_x1索引里查就行了。

如果没有回表操作,仅仅在二级索引里执行,那么extra里会告诉in是Using index。

另外,如果有个SQL语句是:
SELECT * FROM t1 WHERE x1 > ‘xxx’ AND x1 LIKE ‘%xxx’
此时他会先在二级索引index_x1里查找,查找出来的结果还会额外的跟x1 LIKE '%xxx’条件做比对,如果满足条件的才会被筛选出来,这种情况下,extra显示的是Using index condition。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值