zoukankan      html  css  js  c++  java
  • explain

    explain+sql语句

    ● id: SELECT 查询的标识符. 每个 SELECT 都会自动分配一个唯一的标识符.
    ● select_type: SELECT 查询的类型.
    ● table: 查询的是哪个表
    ● partitions: 匹配的分区
    ● type: join 类型
    ● possible_keys: 此次查询中可能选用的索引
    ● key: 此次查询中确切使用到的索引.
    ● ref: 哪个字段或常数与 key 一起被使用
    ● rows: 显示此查询一共扫描了多少行. 这个是一个估计值.
    ● filtered: 表示此查询条件所过滤的数据的百分比
    ● extra: 额外的信息

    1.type 类型的性能比较
    通常来说, 不同的 type 类型的性能关系如下:
    ALL < index < range ~ index_merge < ref < eq_ref < const < system
    ALL 类型因为是全表扫描, 因此在相同的查询条件下, 它是速度最慢的.
    而 index 类型的查询虽然不是全表扫描, 但是它扫描了所有的索引, 因此比 ALL 类型的稍快.
    后面的几种类型都是利用了索引来查询数据, 因此可以过滤部分或大部分数据, 因此查询效率就比较高了.

    2.rows
    rows 也是一个重要的字段. MySQL 查询优化器根据统计信息, 估算 SQL 要查找到结果集需要扫描读取的数据行数.
    这个值非常直观显示 SQL 的效率好坏, 原则上
    rows 越少越好.

    3.Extra
    EXplain 中的很多额外的信息会在 Extra 字段显示, 常见的有以下几种内容:
    ● Using filesort
    当 Extra 中有 Using filesort 时, 表示 MySQL 需额外的排序操作, 不能通过索引顺序达到排序效果. 一般有 Using filesort, 都建议优化去掉, 因为这样的查询 CPU 资源消耗大.
    ● Using index
    "覆盖索引扫描", 表示查询在索引树中就可查找所需数据, 不用扫描表数据文件, 往往说明性能不错
    ● Using temporary
    查询有使用临时表, 一般出现于排序, 分组和多表 join 的情况, 查询效率不高, 建议优化.

    优化总结口诀
    全值匹配我最爱,最左前缀要遵守。
    带头大哥不能死,中间兄弟不能断。
    索引列上少计算,范围之后全失效。
    LIKE百分写最右,覆盖索引不写星。
    不等空值还有or,索引失效要少用。
    VAR引号不可丢,SQL高级也不难。

  • 相关阅读:
    C. Shaass and Lights 解析(思維、組合)
    D. Binary String To Subsequences(队列)(贪心)
    CodeForces 1384B2. Koa and the Beach (Hard Version)(贪心)
    CodeForces 1384B1. Koa and the Beach (Easy Version)(搜索)
    CodeForces 1384C. String Transformation 1(贪心)(并查集)
    CodeForces 1384A. Common Prefixes
    POJ-2516 Minimum Cost(最小费用最大流)
    POJ3261-Milk Patterns(后缀数组)
    HDU-1300 Pearls(斜率DP)
    HDU-4528 小明系列故事-捉迷藏(BFS)
  • 原文地址:https://www.cnblogs.com/chinano1/p/9152655.html
Copyright © 2011-2022 走看看