最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • explain分析及使用方法

    explain在前面的内容中已经有所提到会返回mysql优化器的执行计划。可以说explain是在优化query是最直接有效地验证我们想法的工具。

    查询的是mysql的io操作
    show status like 'innodb_data_r%';
    show status like 'innodb_data_w%'; show status like 'innodb_log_wrt%'; show status like 'innodb_db';
    
    速度看电脑 10ms 1ms
    innodb_data_reads + innodb_data_writes + innodb_dblwr_writes + innodb_log_writes = IO 次数查询数据表的情况
    show create table_name
    查询表索引使用的情况
    show indexes from table_name
    命令查看数据库表的底层大小以及表结构(存储引擎,版本,数据和索引大小,行的平均长度以及行数)
    show table status like 'table_name';
    
    desc table_name
    
    定位查看SQL执行
    show full processlist;
    
    系统
    explain分析 ,profiling 利器
    

    看一下再mysql explain功能中展示各种信息的解释,explain 语句的基本语法如下:

    id:优化器选定的执行计划中查询的序列号。

    select_type:所用的查询类型,主要由以下这集中查询类型。

    . DEPENDENT UNION:子查询中的UNION,且为UNION中从第二个SELECT开始的后面所有SELECT,同样依赖于外部查询的结果集。

    . SIMPLE:厨子查询或UNION之外的其他查询。

    》explain select * from admin_user where user_id = 1 G;

    . PRIMARY:子查询中最外层查询,注意并不是主键查询。

    . SUBQUERY: 子查询内层查询的第一个SELECT,结果不依赖与外部查询结果集。

    》explain select * from role where id = (select role_id from admin_user where user_id = 1) G;

    . UNCACHEABLE SUBQUERY:结果集无法缓存的子查询

    . UNION:UNION 语句中第二个SELECT开始后面的所有SELECT,第一个SELECT为PRIMARY。

    . UNION RESULT:UNION 中的合并结果。

    table:显示这一步所访问的数据库中的表的名称。

    type:告诉我们对标使用的访问方式,主要包含如下几种类型。

    . all: 全表扫描。

    . const: 读常量,最多只会有一条记录匹配,由于是常量,实际上只需要读一次。

    . eq_ref:最多只会有一条匹配结果,一般是通过主键或唯一键索引来访问

    . fulltext:进行全文索引检索

    . index:全索引扫描

    . index_merge:查询中同时使用两个(或更多)索引,然后对索引结果进行和并,在读取表数据。

    . index_subquery:子查询中的返回结果字段组合是一个索引(或索引组合),但不是一个主键或唯一索引。

    . rang:索引范围扫描。

    . ref:join语句中被驱动表索引引用的查询。

    . ref_or_null:与ref的唯一区别就是使用索引引用的查询之外再增加一个空值的查询。

    . system:系统表,表中只有一行数据:

    . unique_subqery:子查询中的返回结果字段组合式主键或唯一约束。

    Possible_keys:该查询可以利用的索引。如果没有任何索引可以使用,就会显示程null,这项内容对优化索引时的调整非常重要。key:优化器从

    possible_keys中选择使用的索引。

    key_len:被选中使用索引的索引建长度。

    ref:列出是通过常量,还是某个字段的某个字段来过滤的

    rows:优化其通过系统手机的统计信息估算出来的结果集记录条数extra:查询中每一步实现的额外细节信息。

    . using index : 出现这个说明mysql使用了覆盖索引,避免访问了表的数据行,效率不错。

    . using where :这说明服务器在存储引擎收到行后讲进行过滤。

    . using temporary :这意味着mysql对查询结果进行排序的时候使用了一张临时表

    . using filesort :这个说明mysql会对数据使用一个外部的索引排序

    注意当出现using temporary 和 using filesort时候说明需要优化操作

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » explain分析及使用方法
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情