zoukankan      html  css  js  c++  java
  • mysql 查询优化 ~explain解读之type的解读

    一 简介:今天咱们来聊聊explain中type的相关解读

    二 类型:

        system: 表中只有一条数据. 这个类型是特殊的 const 类型.

     const: 针对主键或唯一索引的等值查询扫描, 最多只返回一行数据. const 查询速度非常快, 因为它仅仅读取一次即可

       eq_ref: 此类型通常出现在多表的 join 查询, 表示对于前表的每一个结果, 都只能匹配到后表的一行结果. 并且查询的比较操作通常是 =, 查询效率较高. 关键字:连接字段 主键或者唯一性索引

       ref : 此类型通常出现在多表的 join 查询, 针对于非唯一或非主键索引, 或者是使用了 最左前缀 规则索引的查询. 关键字:非唯一性索引

       ref_or_null:与ref方法类似,只是增加了null值的比较。

       range: 表示使用索引范围查询, 通过索引字段范围获取表中部分数据记录. 这个类型通常出现在 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN() 操作中.

       index: 表示全索引扫描(full index scan), 关键字:查询字段和条件都是索引本身

       index_merge:表示查询使用了两个以上的索引,最后取交集或者并集,常见and ,or的条件使用了不同的索引.效率不是很高 关键字:索引合并

       unique_subquery:用于where中的in形式子查询,子查询返回不重复值唯一值

       index_subquery:用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值,可以使用索引将子查询去重。

       fulltext:全文索引检索,要注意,全文索引的优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引

       all:这个就是全表扫描数据文件,然后再在server层进行过滤返回符合要求的记录。

    三 效率总结

       1 依次从好到差: 1 system,const,index  , range,index_merge,ALL 单独查询 

                                    2 eq_ref,ref,ref_or_null all 多表join 查询

                                    3  index_subquery   unique_subquery  子查询

       2  index_merge之外,其他的type只可以用到一个索引

      

  • 相关阅读:
    魔兽争霸3 视野插件
    使用MS08-067 漏洞攻击xp靶机
    CentOS 7 安装Nginx
    给linux系统添加系统调用
    树莓派3b aarch64 cpu性能测试
    树莓派3b 安装arch linux 2
    树莓派3b 安装arch linux 1
    远程线程注入 CreateRemoteThread 返回NULL
    go mod 相关
    给 Windows 的终端配置代理
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/8473976.html
Copyright © 2011-2022 走看看