explain中的Extra

Using temporary,表示的是需要使用临时表;

Using index condition; 索引下推 

官方文档:https://dev.mysql.com/doc/refman/5.7/en/index-condition-pushdown-optimization.html

Using filesort,表示的是需要执行排序操作。 

在sort_bufferz中排序 ,参数sort_buffer_size 大小

去按字段排序 

rowid排序
SET max_length_for_sort_data  单行超过这个参数就使用rowID排序

可以使用覆盖索引优化order by.因为索引本来就是有序,就不用再排序了

using where 在服务端进行过滤?

MySQL执行计划extra中的using index 和 using where using index 的区别 - MSSQL123 - 博客园

using index 

官网 MySQL :: MySQL 5.7 Reference Manual :: 8.8.2 EXPLAIN Output Format

摘录来自: 施瓦茨 (Baron Schwartz). “高性能MySQL:第3版。” Apple Books. 

“Extra列

这一列包含的是不适合在其他列显示的额外信息。MySQL用户手册里记录了大多数可以在这里出现的值。其中许多在本书中已经提到过。

常见的最重要的值如下。

“Using index”

此值表示MySQL将使用覆盖索引,以避免访问表。不要把覆盖索引和index访问类型弄混了。

“Using where”

这意味着MySQL服务器将在存储引擎检索行再进行过滤。许多WHERE条件里涉及索引中的列,当(并且如果)它读取索引时,就能被存储引擎检验,因此不是所有带WHERE子句的查询都会显示“Using where”。有时“Using where”的出现就是一个暗示:查询可受益于不同的索引。

“Using temporary”

这意味着MySQL在对查询结果排序时会使用一个临时表。”

“Using filesort”

这意味着MySQL会对结果使用一个外部索引排序,而不是按索引次序从表里读取行。MySQL有两种文件排序算法,你可以在第6章读到相关内容。两种方式都可以在内存或磁盘上完成。EXPLAIN不会告诉你MySQL将使用哪一种文件排序,也不会告诉你排序会在内存里还是磁盘上完成。

“Range checked for each record (index map: N)”

这个值意味着没有好用的索引,新的索引将在联接的每一行上重新估算。N是显示在possible_keys列中素引的位图,并且是冗余的。”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值