mysql中exp是什么_【mysql】- Expalin篇

No tables used:当查询语句的没有FROM语句时将会提示该额外信息

Impossible WHERE:查询语句的 WHERE 语句永远为 FALSE 时将会提示该额外信息

No matching min/max row:查询列表处有MIN或者MAX聚集函数,但是并没有符合WHERE语句中的搜索条件的记录时,将会提示该额外信息

Using index:查询列表以及搜索条件中只包含属于某个索引的列,也就是在可以使用索引覆盖的情况下,在 Extra 列将会提示该额外信息

Using index condition:有些搜索条件中虽然出现了索引列,但却不能使用到索引(索引条件下推:减去好多回表操作的成本(Extra也一样会显示Using index condition))

Using where

当我们使用全表扫描来执行对某个表的查询,并且该语句的WHERE语句中有针对该表的搜索条件时,在 Extra 列中会提示上述额外信息

当使用索引访问来执行对某个表的查询,并且该语句的WHERE语句中有除了该索引包含的列之外的其他搜索条件时,在 Extra 列中也会提示上述额外信息

Using join buffer (Block Nested Loop)

在连接查询执行过程中,当被驱动表不能有效的利用索引加快访问速度,MySQL一般会为其分配一块名叫 join buffer 的内存块来加快查询速度,也就是我们所讲的基于块的嵌套循环算法

Not exists:当我们使用左/右(外)连接时,如果WHERE语句中包含要求被驱动表的某个列等于NULL值的搜索条件,并且那个列又是不允许存储 NULL 值的,那么在该表的执行计划的 Extra 列就会提示 Not exists 额外信息

Using intersect(...):准备使用Intersect索引合并的方式执行查询,括号中的...表示需要进行索引合并的索引名称

Using union(...):准备使用Union索引合并的方式执行查询

Using sort_union(...):说明准备使用Sort-Union索引合并的方式执行查询

Zero limit:LIMIT语句的参数为 0 时,表示压根儿不打算从表中读出任何记录,将会提示该额外信息

Using filesort:有些排序操作无法使用到索引,只能在内存中(记录较少的时候)或者磁盘中(记录较多的时候)进行排序,就会在执行计划的 Extra 列中显示 Using filesort提示;(需要使用filesort的记录很多时,过程是很耗费性能的)

Using temporary:在许多查询的执行过程中,MySQL可能会借助临时表来完成一些功能,比如去重、排序之类的,比如我们在执行许多包含DISTINCT、GROUP BY、UNION等语句的查询过程中,如果不能有效利用索引来完成查询,MySQL很有可能寻求通过建立内部的临时表来执行查询。如果查询中使用到了内部的临时表,在执行计划的 Extra 列将会显示 Using temporary 提示

Start temporary, End temporary:查询优化器会优先尝试将 IN 子查询转换成 semijoin ,而 semi-join 会有好多种执行策略,当执行策略为DuplicateWeedout时,也就是通过建立临时表来实现为外层查询中的记录进行去重操作时,驱动表查询执行计划的 Extra 列将显示 Start temporary 提示,被驱动表查询执行计划的 Extra列将显示 End temporary 提示

LooseScan:在将In子查询转为semi-join时,如果采用的是LooseScan执行策略,则在驱动表执行计划的Extra列就是显示LooseScan提示

FirstMatch(tbl_name):在将In子查询转为semi-join时,如果采用的是FirstMatch执行策略,则在被驱动表执行计划的Extra列就是显示FirstMatch(tbl_name) 提示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值