MySQL的EXPLAIN的EXTRA

深入探讨MySQL查询优化器的执行过程,包括查询计划的重要补充信息:usingwhere、usingtemporary、usingfilesort、usingindex、usingjoinbuffer、impossiblewhere、selecttablesoptimizedaway和distinct等,了解它们如何影响查询性能。

MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。

(1)using where

使用了where子句来过滤元组

124316_baJh_1383356.png


(2)using temporary

用临时表保存中间结果,常用于GROUP BY 和 ORDER BY操作中

114022_Xssa_1383356.png

114742_HRT9_1383356.png

115120_WcqU_1383356.png

(3)using filesort

使用文件完成排序操作,这是可能是ordery by,group by语句的结果,这可能是一个CPU密集型的过程,可以通过选择合适的索引来改进性能,用索引来为查询结果排序。

114918_U4ik_1383356.png


(4)using index

不需要读取数据文件,从索引树(索引文件)中即可获得信息。如果同时出现using where,表明索引被用来执行索引键值的查找,没有using where,表明索引用来读取数据而非执行查找动作。

124713_zXyK_1383356.png


(5)using join buffer

使用了连接缓存:

Block Nested Loop,连接算法是块嵌套循环连接

114603_cEmf_1383356.png

115413_Amw4_1383356.png


Batched Key Access,连接算法是批量索引连接


(6)impossible where

where子句的值总是false,不能用来获取任何元组


(7)select tables optimized away

在没有GROUP BY子句的情况下,基于索引优化MIN/MAX操作,或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化。

115235_7C3U_1383356.png


(8)distinct

优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作


转载于:https://my.oschina.net/scipio/blog/293052

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值