106、透彻研究通过explain命令得到的SQL执行计划(7)
00 分钟
2022-8-26

106、透彻研究通过explain命令得到的SQL执行计划(7)

接下来我们继续学习SQL语句的执行计划,通过之前的学习,大家基本上应该已经对执行计划是什么意思,代表的是你SQL语句怎么执行,有一个整体的了解了
这次我们主要研究一下执行计划里的extra这个字段里的内容都是代表什么的,其实很多人可能以为extra字段是无关紧要的,其实并不是,因为除了extra字段以外的其他内容,最多就是告诉你针对你SQL里的每个表是如何查询的,用了哪个索引,查出来了多少数据,但是很多时候,往往针对一个表可不是那么简单的。
因为除了基于索引查询数据,可能同时还要基于where条件里的其他过滤条件去筛选数据,此时还会筛选出来一些数据。
这个extra里的信息可能会非常非常的多,我们不可能都学一遍,很多其实也偶尔出现,也没多大意义,大家看到了自然也明白。我们主要是学习一些平时常见的,比较有用的extra信息。
比如下面的SQL语句:
可以看看他的执行计划是什么样的 +—-+————-+——-+————+——+—————+———-+———+——-+——+———-+————-+ | 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语句是:
此时他会先在二级索引index_x1里查找,查找出来 的结果还会额外的跟x1 LIKE ’%xxx’条件作对比,如果满足条件的才会被筛选出来,这种情况下,extra显示的是Using index condition。

评论