• Mysql(二) explain详解


    Mysql(二) explain详解

    explain介绍

    使用explain关键字可以模拟优化器执行SQL,分析sql查询的性能

    返回如下结果

    请添加图片描述

    explain出来的信息有12列,分别是id、select_type、table、partitions、type、possible_keys、key、key_len、ref、rows、filtered、Extra

    id 查询的序列号

    返回结果中执行的优先级,值越大,越先执行,相同时,由上到下顺序执行

    select_type 查询的类型

    • sample简单查询语句
    • primary复杂查询中最外层的查询
    • subquery 不包含from的子查询
    • derived 包含在 from 子句中的子查询
    • union 在 union 中的第二个和随后的 select

    table 查询的表

    要查询的表,当 from 子句中有子查询时,table列是 <derivenN> 格式,表示当前查询依赖 id=N 的查询,于是先执行 id=N 的查询。

    **partitions 查询的分区 **

    type

    这一列表示关联类型或访问类型,即MySQL决定如何查找表中的行,查找数据行记录的大概范围。
    依次从最优到最差分别为:system > const > eq_ref > ref > range > index > ALL

    • system 只查询一个元素并且是常量
    • const 查询是一个常量,有多个元素
    • **eq_ref ** 使用唯一索引 主键或者唯一键,只返回一条记。一般用来 多表连接中使用primary key或者unique key作为关联条件
    • **ref ** 使用普通索引,可能会查询到多个值
    • **range ** 范围查询,且使用到索引
    • **index ** 扫描全索引就能拿到结果,一般使用为覆盖索引
    • ALL 全表扫描,效率最差

    possible_keys

    可能用到的索引

    key

    实际用到的索引

    key_len

    这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。

    ref

    表查找值所用到的列或常量

    rows

    估计返回的结果集行数

    filtered

    查询条件过滤的行数的百分比

    Extra 额外信息

    • Using filesort 使用文件内排序,建议优化
    • Using temporary 使用临时表,效率不高,建议优化
    • Using index 使用覆盖索引,性能不错
    • Using where 使用了where查询,但字段没有在索引范围内
    • Using index 使用覆盖索引,性能不错
    • Using where 使用了where查询,但字段没有在索引范围内
    • Using index condition 查询的列不完全被索引覆盖
  • 相关阅读:
    【Edabit 算法 ★★★★★★】【两个大整数相加】Recursion: Sum of Two Numbers (With A Twist!)
    Linxu epoll开发服务端
    Xcode 清空最近打开的项目
    Mac 免费模拟器推荐适配m1芯片
    [附源码]计算机毕业设计JAVAjsp网上蛋糕订购系统
    Salesforce从业者最重要的6个基础认证!
    探索 Symfony 框架:工作原理、特点及技术选型
    Coremail城市沙龙活动|齐聚古城西安,护航信息安全
    英特尔发布31.0.101.3430和31.0.101.2111新驱动
    力扣623.在二叉树中增加一行 dfs
  • 原文地址:https://blog.csdn.net/l577125882/article/details/125594729