• 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只可以用到一个索引

      

  • 相关阅读:
    关于电商开发中金额的数据存储
    java编程IO简单回顾和学习
    不同数据源之间的数据同步jdbc解决方案
    简单的dialog,类似alert弹框
    PageInfo 前台分页js,带分页栏
    oracle 操作,偶尔记一下
    时间控件My97简单用法
    时间控件格式化,有了他,我再也不怕格式化时间了
    oracle 数据库io 异常,错误代码17002 解决办法
    列表渲染
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/8473976.html
Copyright © 2020-2023  润新知