zoukankan      html  css  js  c++  java
  • mysql explain

    mysql> explain select * from siteinfo;

    +----+-------------+----------+------+---------------+------+---------+------+--------+-------+

    | id | select_type | table    | type | possible_keys | key  | key_len | ref  | rows   | Extra |

    +----+-------------+----------+------+---------------+------+---------+------+--------+-------+

    |  1 | SIMPLE      | siteinfo | ALL  | NULL          | NULL | NULL    | NULL | 902310 |       | 

    +----+-------------+----------+------+---------------+------+---------+------+--------+-------+

    只说type

    system:

            表仅有一行,这是const连接类型的一个特例

    const:

            const用于常数值比较primary key时,单查询的表仅有一行时,使用system

    eq_ref:

            除const类型外最好的可能实现的连接类型 它用在一个索引的所有部分被连接使用并且索引是unique或primary key

           对于每一个索引键,表中只用一条记录与之匹配

    ref:

           连接不能基于关键字选择单个行,可能查找到多个符合条件的行。叫做ref是因为索引要跟某个参考值相比较。

           这个参考值或者是一个常数,或者是来自一个表里的多表查询的结果值。

    ref_or_null:

            如同ref,但是MySQL必须在初次查找的结果里找出null条目,然后进行二次查找。

    index_merge:

            说明索引合并优化被使用

    unique_subquery: 

            在某些IN查询中使用此种类型,而不是常规的ref: 

            value IN (SELECT primary_key FROM single_table WHERE some_expr) 

    index_subquery:

            在某些IN查询中使用此种类型,与unique_subquery类似,但是查询的是非唯一性索引: 

            value IN (SELECT key_column FROM single_table WHERE some_expr) 

    range:

            只检索给定范围的行,使用一个索引来选择行。key列显示使用了哪个索引。当使用=、<>、>、>=、<、<=、

            IS NULL、<=>、BETWEEN或者IN操作符,用常量比较关键字列时,可以使用range。

    index:

                全表扫描,只是扫描表的时候按照索引次序进行而不是行。主要优点就是避免了排序,但是开销仍然非常大。

    all:
         全表扫描

    possible key : 可能使用到的索引

    key : 实际使用到的索引

           MySQL实际从possible_key选择使用的索引。如果为NULL,则没有使用索引。

           很少的情况下,MYSQL会选择优化不足的索引。

           这种情况下,可以在SELECT语句中使用USE INDEX(indexname)来强制使用一个索引

           或者用IGNORE INDEX(indexname)来强制MYSQL忽略索引

    key_len: 索引长度,在不损失精确性的情况下,长度越短越好

    ref: 说明索引的哪一列被使用了,

    rows: 检索的行数

    extra项:

         userfilesort

                 表示MySQL会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容。

                 可能在内存或者磁盘上进行排序。MySQL中无法利用索引完成的排序操作称为“文件排序”。

          using temporary

                表示MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by。

    摘自: http://wenku.baidu.com/view/f7335cc8da38376baf1fae5d.html

  • 相关阅读:
    2.Android之按钮Button和编辑框EditText学习
    《DSP using MATLAB》Problem 3.8
    《DSP using MATLAB》Problem 3.7
    《DSP using MATLAB》Problem 3.6
    《DSP using MATLAB》Problem 3.5
    《DSP using MATLAB》Problem 3.4
    《DSP using MATLAB》Problem 3.3
    《DSP using MATLAB》Problem 3.2
    《DSP using MATLAB》Problem 3.1
    《DSP using MATLAB》Problem 2.20
  • 原文地址:https://www.cnblogs.com/allenhaozi/p/4508418.html
Copyright © 2011-2022 走看看