美文网首页
explain输出内容解析--type

explain输出内容解析--type

作者: 资深菜鸡程序员 | 来源:发表于2021-02-02 16:38 被阅读0次

    1.依次从好到坏

    system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL

    除了all之外,其他的type都可以使用到索引,除了index_merge之外,其他的type只可以用到一个索引

    2.type

    (1).system

       表中只有一行数据或者是空表。
    无法复现

    (2).const(重要)

       使用唯一索引或者主键,返回记录一定是1行记录的等值where条件时,通常type是const。其他数据库

    也叫做唯一索引扫描

    (3).eq_ref(重要)

    关键字:连接字段主键或者唯一性索引。

    此类型通常出现在多表的 join 查询, 表示对于前表的每一个结果, 都只能匹配到后表的一行结果. 并且查询的比较操作通常是 '=', 查询效率较高

    (4).ref(重要)

    针对非唯一性索引,使用等值(=)查询非主键。或者是使用了最左前缀规则索引的查询。

    不管两张表abc是什么类型的索引只要是非主键连接 打印出的索引类型都是ref

    最左前缀原则 

    (5)ref_or_null

    与ref方法类似,只是增加了null值的比较。实际用的不多。

    (6)unique_subquery

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

    (7)index_subquery

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

    (8)range(重要)

    索引范围扫描,常见于使用>,<,is null,between ,in ,like等运算符的查询中。

    name使用索引

    abc不使用索引

    (9)index_merge

    表示查询使用了两个以上的索引,最后取交集或者并集,常见and ,or的条件使用了不同的索引,官方

    排序这个在ref_or_null之后,但是实际上由于要读取所个索引,性能可能大部分时间都不如range。

    (10)index(重要)

    关键字:条件是出现在索引树中的节点的。可能没有完全匹配索引。

    索引全表扫描,把索引从头到尾扫一遍,常见于使用索引列就可以处理不需要读取数据文件的查询、可以使用索引排序或者分组的查询。
    单索引:

    组合索引:

    (11)all(重要)

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

    主键不要uuid

    why? 无序、辅助索引要存 太长

    主键: 自增

    分布式主键: 雪花算法(sharding jdbc)、 redis生成

    相关文章

      网友评论

          本文标题:explain输出内容解析--type

          本文链接:https://www.haomeiwen.com/subject/lumxtltx.html