zoukankan      html  css  js  c++  java
  • MySQL EXPLAIN性能分析

    :1、是什么

      使用Explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句。分析你的查询语句或是表结构的性能瓶颈。

    2、能干嘛

    1. 获取表的读取顺序;
    2. 哪些索引可以使用;
    3. 数据读取操作的操作类型;
    4. 哪些索引被实际使用;
    5. 表之间的引用;
    6. 每张表有多少行被物理查询;

    3、字段说明

       3.1 id

        表示查询中执行select子句或操作表的顺序;

        每个id号码,表示一趟独立的查询。一个sql的查询躺输越少越好。

        id相同,执行顺序自上而下;

        id不同,值大的先执行;

      3.2 type

        最好system > const > eq_ref >ref >range > index >all,一般来说,得保证查询至少达到range级别,最好能达到ref级别。

      • system:表只有一行记录;
      • const:表示通过索引一次就找到了,const用于pk或unique索引的;
      • eq_ref:唯一性索引扫描;
      • ref:非唯一性索引扫描;
      • range:只检索了范围;
      • index:使用了索引但是没用通过索引进行过滤,一般是使用了覆盖索引或是利用索引进行了排序分组;
      • All:全表扫描;

      3.3 key_len

        命中索引长度,组合索引中命中长度越大效率越高。

      3.4 rows

        物理扫描行数,越少越好。

      3.5 extra

        包含不适合在其他列中显示但十分重要的额外信息;

      • Using filesort:order by没用上索引,手工排序,效率低;
      • Using temporary:group by(包含一个order by)没用上索引,效率更低;
      • Using index:用了索引;
      • Using where:where条件使用了索引;
      • Using join buffer:两个表关联字段没用上索引;
      • impossible where:sql条件有问题;
      • select tables optimized away:使用了优化器;

      3.6 其他的信息没太大用处

  • 相关阅读:
    2019-9-2-正则表达式30分钟入门教程
    2019-6-23-开源项目使用-appveyor-自动构建
    2019-8-29-dotnet-core-使用-sqlite-部署到-Centos-服务器
    2018-10-19-Roslyn-使用-Directory.Build.props-文件定义编译
    2019-4-29-dotnet-通过-WMI-获取系统安装软件
    2018-12-24-win10-uwp-求两个矩形相连的几何
    shell公共函数functions
    linux防火墙和SELinux
    ubuntu开启ssh
    文件夹操作
  • 原文地址:https://www.cnblogs.com/xp2h/p/12463552.html
Copyright © 2011-2022 走看看