zoukankan      html  css  js  c++  java
  • MySQL Execution Plan--EXPLAIN用法

    MySQL Explain新用法:

    --使用EXPLAIN来查看语句的最终执行计划
    语法:EXPLAIN [EXTENDED] SELECT select_options
    
    
    --在MYSQL 5.7版本后,可以查看正在执行的语句的执行计划
    EXPLAIN FOR CONNECTION connection_id;
    
    
    --在MYSQL 5.7版本后,可以指定生成执行计划的格式为JSON
    EXPLAIN FORMAT=JSON SELECT ...

    在EXPLAIN的输出结果中,有一行Type用来表示MYSQL使用哪种访问类型来从MYSQL表中找到需要的行。

    type=ALL: 表示全表扫描,需要遍历全表的所有行。
    缺少索引或缺少合适的过滤条件,或执行计划有问题
    
    type=INDEX: 表示所有扫描,需要遍历索引上所有行。
    查询缺少过滤条件或存在类型转换问题。
    
    type=range: 表示范围扫描。
    
    type=ref: 使用非唯一索引或唯一索引的前缀扫描,返回匹配某个单独值得记录行。
    
    type=eq_ref:使用唯一索引来匹配。
    
    type=const/system:单表总最多有一个匹配行,查询效率高。
    
    type=null,MYSQL不用访问表或索引即可获得结果。


    使用EXPLAIN EXTENDED 命令+SHOW WARNINGS命令来看在SQL语句被执行前被执行优化器改写成的新SQL:

    EXPLAIN EXTENDED SELECT * FROM TB001 WHERE ID=200;
    +----+-------------+-------+-------+---------------+---------+---------+-------+------+----------+-------+
    | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
    +----+-------------+-------+-------+---------------+---------+---------+-------+------+----------+-------+
    | 1 | SIMPLE | TB001 | const | PRIMARY | PRIMARY | 8 | const | 1 | 100.00 | NULL |
    +----+-------------+-------+-------+---------------+---------+---------+-------+------+----------+-------+
    
    SHOW WARNINGS G
    *************************** 1. row ***************************
    Level: Note
    Code: 1003
    Message: /* select#1 */ select '200' AS `id`,'INNODB_READ_AHEAD_TH' AS `c1` from `test1`.`tb001` where 1
    1 row in set (0.00 sec)



  • 相关阅读:
    面向对象程序设计寒假作业3
    面向对象程序设计编程题完善1.0
    jq分片上传,可拖动上传
    给富文本框的头添加title
    vue的富文本编辑器使用,并且添加显示当前输入字数
    超出省略号
    关于缓存 windwo.localStorage和sessionStorage
    复制框里的内容
    同一标签添加多个背景图
    函数里添加超链接
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10726708.html
Copyright © 2011-2022 走看看