美文网首页
MySql--Explain 详解(下)

MySql--Explain 详解(下)

作者: 简书徐小耳 | 来源:发表于2019-05-20 11:25 被阅读0次

    具体细节 请去掘金购买《MySQL 是怎样运行的:从根儿上理解 MySQL》

    EXPLAIN

    Extra

    • 1.通过这些额外信息来更准确的理解MySQL到底将如何执行给定的查询语句
    • 2.No tables used:当查询语句的没有FROM子句时将会提示该额外信息
    • 3.Impossible WHERE:查询语句的WHERE子句永远为FALSE时将会提示该额外信息
    • 4.No matching min/max row:当查询列表处有MIN或者MAX聚集函数,但是并没有符合WHERE子句中的搜索条件的记录时
    • 5.Using index:可以使用索引覆盖的情况
    • 6.Using index condition:有些搜索条件中虽然出现了索引列,但却不能使用到索引,比如下边这个查询
      SELECT * FROM s1 WHERE key1 > 'z' AND key1 LIKE '%a';
      key1 > 'z'走索引,然后在二级索引中根据条件筛选 符合条件的记录,再去
      主键中查询。
    • 7.Using where:我们使用全表扫描来执行对某个表的查询,并且该语句的WHERE子句中有针对该表的搜索条件时
      ,使用索引访问来执行对某个表的查询,并且该语句的WHERE子句中有除了该索引包含的列之外的其他搜索条件时,在Extra列中也会提示上述额外信息
    • 8.Using join buffer (Block Nested Loop):在连接查询执行过程中,当被驱动表不能有效的利用索引加快访问速度,MySQL一般会为其分配一块名叫join buffer的内存块来加快查询速度,也就是我们所讲的基于块的嵌套循环算法
    • 9.Not exists:当我们使用左(外)连接时,如果WHERE子句中包含要求被驱动表的某个列等于NULL值的搜索条件,而且那个列又是不允许存储NULL值的
    • 10.Using intersect(...)、Using union(...)和Using sort_union(...):分别使用intersect,union和sort_union索引合并的方式查询
    • 11.Zero limit:当我们的LIMIT子句的参数为0时,表示压根儿不打算从表中读出任何记录
    • 12.Using filesort:在内存中(记录较少的时候)或者磁盘中(记录较多的时候)进行排序
    • 13.Using temporary:使用了临时表来完成一些功能,比如去重、排序之类的。
    • 14.Start temporary, End temporary:查询优化器会优先尝试将IN子查询转换成semi-join,而semi-join又有好多种执行策略,当执行策略为DuplicateWeedout时,
      也就是通过建立临时表来实现为外层查询中的记录进行去重操作时,驱动表查询执行计划的Extra列将显示Start temporary提示,
      被驱动表查询执行计划的Extra列将显示End temporary提示
    • 15.LooseScan:在将In子查询转为semi-join时,采用的是LooseScan执行策略
    • 16.FirstMatch(tbl_name):在将In子查询转为semi-join时,采用的是FirstMatch执行策略

    Json格式的执行计划

    • 1.在EXPLAIN单词和真正的查询语句中间加上FORMAT=JSON,里面可以看到执行成本
    • 2.read_cost:IO成本和检测rows × (1 - filter)条记录的CPU成本
    • 3.eval_cost:检测 rows × filter条记录的成本。
    • 4.prefix_cost:单独查询的成本,等于read_cost + eval_cost
    • 5.data_read_per_join:此次查询中需要读取的数据量

    SHOW WARNINGS

    • 1.在执行完EXPLAIN之后,立马执行SHOW WARNINGS,可以看到三个字段.level,Code,Message
    • 2.Message字段展示的信息类似于查询优化器将我们的查询语句重写后的语句,并不是等价

    相关文章

      网友评论

          本文标题:MySql--Explain 详解(下)

          本文链接:https://www.haomeiwen.com/subject/bvnhzqtx.html