zoukankan      html  css  js  c++  java
  • Mysql 性能分析 Explain

    Mysql Query Optmize: 查询优化器, SQL语句会给Query Optimize他会执行他认为最优的方式..

    Mysql 常见问题

      CPU饱和,IO磁盘发生在装入数据大于内存时.

    Explain 查询解析使用

      id, select_type, table,type,  possible_keys, key , key_len, ref, rowsExtra

    id  -  表的执行顺序

      值相同: 按顺序执行

      值不同,: 值越大, 先执行. 如子查询

    select_type - 数据读取操作的操作类型

    SIMPLE, PRIMARY, SUBQUERY, DERIVED, UNION, UNION RESULT 主要6个表示子查询,复杂查询等

    table - 表名

    derived 虚表

    type -  访问类型

    最好的的依次:

      system > const > eq_ref > ref  > fulltext > ref_or_null> index_merge > unique_subquery > index_subquery>  range > index > all

      system > const > eq_ref > ref  > range > index > all  , 主要常用最好到ref range级别

    all: 全表扫描, 从硬盘读取数据

    index:   index全索引扫描,比All快.比如只找主键列值

    range:  检索指定范围的行, 使用索引来选择行, 

    ref:       非唯一性索引扫描, 返回所有匹配的单独行,可以找到多个复合条件的行, 属于查找和扫描的混合体, 比如复合索引2列,找其中1列..

    eq_ref:  唯一性索引扫描, 表只有一条记录与之匹配, 常见主键货唯一索引, 比如部门表,ID唯一,员工表有部门id,  联合查询

    const:   通过索引1次找到, 主键,唯一键 只匹配一行数据,比如通过主键查一条记录

    system: 只有一条记录的表, 忽略不计

    - 哪些索引可以使用

    possible_keys:  可能使用的索引, 不一定使用

    key:       真实使用的索引,若为NULL未使用索引, 若使用覆盖索引(查询的列被索引覆盖),则只出现在key中,  比如查询的字段是复合索引的顺序一样,列一样,

    key_len              标识索引使用的字节数, 越少越好,  

    rows -  哪些行被优化器查询

    Extra - 包含不适合在其他列中显示的十分重要的信息

    Using filesort:      (严重)文件索引, 无法利用索引完成的排序,排序按照索引顺序.

    Using temporary  (严重)生成了临时表

    Using index         效率不错, 索引被用来执行索引键值查找, 

    Using where

    Using join buffer, 使用连接缓存JOIN使用比较多

    Impossible where  SQL有问题, 不可能的SQL

    select tables optimezed away

    distinct 

  • 相关阅读:
    iis 7.5应用程序池自动停止
    百度云推送
    两点经纬度之间距离计算
    集合已修改;可能无法执行枚举操作。
    【百度地图】- 学习.1
    阿里云服务器下安装LAMP环境(CentOS Linux 6.3)
    微信相关内容
    阿里云服务器下安装LAMP环境(CentOS Linux 6.3)
    php面试相关
    MySQL权限管理
  • 原文地址:https://www.cnblogs.com/eason-d/p/9218250.html
Copyright © 2011-2022 走看看