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++ Primer 学习笔记_104_特殊工具与技术 --嵌套类
    [AngularJS + Webpack] Requiring CSS & Preprocessors
    [AngularJS + Webpack] Requiring Templates
    [AngularJS + Webpack] ES6 with BabelJS
    [Flux] 3. Actions
    [RxJS] Aggregating Streams With Reduce And Scan using RxJS
    [RxJS] map vs flatMap
    [RxJS] Stream Processing With RxJS vs Array Higher-Order Functions
    [MODx] Solve cannot upload large file
    [React + webpack] hjs-webpack
  • 原文地址:https://www.cnblogs.com/chinano1/p/9152655.html
Copyright © 2011-2022 走看看