zoukankan      html  css  js  c++  java
  • MySQL--EXPLAIN用法

    来自:http://blog.sina.com.cn/s/blog_4586764e0100o9s1.html

    explain用法
        EXPLAIN tbl_name
      或:EXPLAIN [EXTENDED] SELECT select_options

    前者可以得出一个表的字段结构等等,后者主要是给出相关的一些索引信息,而今天要讲述的重点是后者。

    举例
    mysql> explain select * from city where name='天长市';


    各个属性的含义
    • id
        select查询的序列号
    • select_type
        select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。
    • table
        输出的行所引用的表。
    • type
        联合查询所使用的类型。
        type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
        system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

        一般来说,得保证查询至少达到range级别,最好能达到ref。
    • possible_keys
        指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。
    • key
        显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。
    • key_len
        显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。
    • ref
        显示哪个字段或常数与key一起被使用。
    • rows
        这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。
    • Extra
        如果是Only index,这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。
        如果是where used,就是使用上了where限制。
        如果是impossible where 表示用不着where,一般就是没查出来啥。
        如果此信息显示Using filesort或者Using temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算。

        常见的一些名词解释
        Using filesort
        MySQL需要额外的一次传递,以找出如何按排序顺序检索行。

        Using index
        从只使用索引树中的信息而不需要进一步搜索读取实际的行来检索表中的列信息。

        Using temporary
        为了解决查询,MySQL需要创建一个临时表来容纳结果。

        ref
        对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取

        ALL
        完全没有索引的情况,性能非常地差劲。

        index
        与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。

        SIMPLE
        简单SELECT(不使用UNION或子查询) 
  • 相关阅读:
    Algs4-1.3.37Josephus问题
    Algs4-1.3.35随机队列
    Algs4-1.3.33一个双向队列Deque的可变长环形数组实现
    Algs4-1.3.34随机背包
    Algs4-1.3.33一个双向队列Deque-双向链表实现
    Algs4-1.3.32链表实现Stack和Queue的合体Steque
    Algs4-1.3.31实现双向链表
    Algs4-1.3.30反转链表
    C语言多级指针
    spring mvc@ModelAttribute与@SessionAttributes的执行流程
  • 原文地址:https://www.cnblogs.com/microcat/p/6627011.html
Copyright © 2011-2022 走看看