• MySQL的性能分析explain


    mysql的explain解析

    explain 一条sql语句得到以下的参数

    id

    id越大越早执行
    id相同,自上而下的执行

    select_type

    (1)SIMPLE (简单的SELECT,没有UNION或子查询等)

    (2)PRIMARY(子查询中最外面的查询,如果查询包含任何复杂的子部分,则最外面的选择标记为PRIMARY)

    (3)UNION(UNION中的第二个或后续SELECT语句)

    (4)DEPENDENT UNION(UNION中的第二个或后续SELECT语句,取决于外部查询)

    (5)UNION RESULT(UNION的结果,union语句中第二次选择之后的所有选择)

    (6)SUBQUERY(子查询中的第一个SELECT,结果不依赖于外部查询)

    (7)DEPENDENT子查询(子查询中的第一个SELECT,取决于外部查询)

    (8)DERIVED(SELECT的子查询,派生表的FROM子句)

    (9)不可查询子查询(无法缓存子查询的结果,必须重新评估外部链接的第一行)

    type

    对表的访问方法意味着MySQL在表中查找所需行的方式,也称为”访问类型”。【日常优化的关键】
    常用的类型有:ALL,索引,范围,ref,eq_ref,const,system,NULL(从左到右,性能从差到好)

    (1)ALL:全表扫描,MySQL将遍历整个表以查找匹配的行

    (2)index:全索引扫描,索引和ALL的区别在于索引类型仅遍历索引树

    (3)range:仅检索给定范围的行,使用索引选择行

    (4)ref:表示上表的连接匹配条件,即使用哪些列或常量在索引列上查找值

    (5)eq_ref:与ref相似,不同之处在于所使用的索引是唯一索引。对于每个索引键值,表中只有一个记录匹配。

    (6)const,system:当MySQL优化查询的一部分并将其转换为常量时,将使用这些类型的访问。如果将主键放在where列表中,MySQL可以传输查询

    更改为常量,系统是const类型的特例,当查询表只有一行时,请使用系统

    (7)NULL:MySQL在优化过程中分解语句,甚至在执行过程中不需要访问表或索引。例如,可以通过单独的索引搜索来从索引列中选择最小值。

    key

    键:指示实际使用的索引

    显示MySQL实际决定使用的键(索引),这些键必须包含在possible_keys中

    如果未选择索引,则键为NULL。要强制MySQL使用或忽略possible_keys列中的索引,请在查询中使用FORCE INDEX,USE INDEX或IGNORE INDEX。

    key_len

    索引字段的长度

    指示索引中使用的字节数。此列可用于计算查询中使用的索引的长度(key_len显示的值是索引字段的最大可能长度,而不是实际使用的长度,也就是说,
    key_len是根据表定义计算的,未从表中检索)在不损失准确性的情况下,长度越短越好。

    row,filter

    10,行数:扫描的行数(估计的行数)

    估计结果集中的行数,这表明MySQL会根据表统计信息和索引选择来估计要读取以查找所需记录的行数。

    11,已过滤:按表条件过滤的行百分比

     

     

  • 相关阅读:
    c#使用SoundPlayer播放wav格式音频
    c#NAudio 录音功能实现
    c#异步方法调用
    c# 读取文件目录下的信息
    angular笔记_1
    js获取form元素,不使用id
    事物回滚机制
    ckplayer跨域调用
    帝国移动pc站文章
    页面切换导航样式也随之改变
  • 原文地址:https://www.cnblogs.com/topass123/p/16609586.html
Copyright © 2020-2023  润新知