zoukankan      html  css  js  c++  java
  • mysql 重新整理——索引优化explain字段介绍二 [十]

    前言

    紧接上文。

    正文

    type

    type字段有如下类型:

    1.all

    2.index

    3.rang

    4.ref

    5.eq_ref

    6.const,system

    7.null

    最好到最差的顺序为:

    system>const>eq_red>ref>range>index>all

    优化的标准为至少达到range级别,最好是ref级别。

    system 表只有一行记录,这是const类型的特列,基本不会出现。

    const:表示通过一次就找到了,const 一般是在primary_key 或者 unique 索引。因为只匹配一行数据,所以很快。

    eq_ref:唯一索引扫描,对每个索引键,只有一条记录与之匹配。

    ref:非唯一索引扫描,返回匹配某个值的所有行。

    range:只检索给定范围的行,使用一个索引来选择行。一般出现在between、>、<、in等查询中。

    index:select id from t1 这时候是找出全部的索引,而不必去扫描表。

    all 表示全表扫描来查询性能最低。

    possible_key 、 key、key_len

    possible_key 显示可能应用在这张表中的索引,一个或者多个。

    查询设计的字段上若存在索引,则该索引将会被列出,但是不一定被使用。

    其实这个就是我们写在where 中用到的索引。

    key 为实际使用的索引。

    有三种情况:

    第一种:possible_key 为null ,而key 不为空,一般就是索引扫描,别名覆盖索引。

    第二种:possible_key 有一个或者多个,然后key显示一个。

    第三个:possible_key 为null,然后key为null。

    key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。在不损失精确性的情况下,越短越好。

    key_len 显示的值为索引字段的最大可能长度,并非实际长度,即:key_len 是根据表定义计算而得,不是通过表内检索出的。

    ref

    显示索引的那一列被使用了,如果可能的话,是一个常数。那些列或者常量被用于查找索引列上的值。

    rows

    根据统计信息及索引选用情况,大致估算出找到所需的记录锁需要读取的行数。

    每张表有优化器查询的行数,这个比较好理解。

    extra

    显示是额外的信息。

    这一篇比较详细:

    https://blog.csdn.net/poxiaonie/article/details/77757471

    字段比较多,就不详细介绍了。

  • 相关阅读:
    HDU 1849 Rabbit and Grass
    HDU 1848 Fibonacci again and again
    HDU 1847 Good Luck in CET-4 Everybody!
    HDU 1846 Brave Game
    HDU 1387 Team Queue
    HDU 1870 愚人节的礼物
    HDU 1509 Windows Message Queue
    HDU 4381 Grid
    HDU 5800 To My Girlfriend
    HDU 5806 NanoApe Loves Sequence Ⅱ
  • 原文地址:https://www.cnblogs.com/aoximin/p/13022068.html
Copyright © 2011-2022 走看看