• 【Mysql】EXPLAIN


    Explain关键字是Mysql中sql优化的常用「关键字」,通常都会使用Explain来「查看sql的执行计划,而不用执行sql」,从而快速的找出sql的问题所在。

    EXPLAIN SELECT * FROM user
    • 1

    总计有十二个字段:

    id字段:id表示执行select查询语句的序号,一般出现在多重嵌套的查询中,它是sql执行的顺序的标识,sql按照id从大到小执行,id相同的为一组,从上到下执行。

    比如explain ( select * from user where id in (select user_id from role))

    两者的id都相同,便表示sql的执行从上往下执行。

    若两者的id不相同,id越大的就越先执行(一般是子查询)

    select_type字段: 表示该语句是简单查询、简单的子查询、from子句的子查询还是union查询

    table字段: table字段表示的是查询的是哪个表

    type字段: type字段表示的sql关联的类型或者说是访问的类型,从这个字段中我们可以确定这条sql查找数据库表的时候,查找记录的大概范围是怎么样的,直接就能体现sql的效率问题。

    比如:
    system:表示表中只有一行记录
    const:唯一索引或者主键索引中使用等值查询,一次索引找到记录。
    eq_ref:表示使用唯一索引或者主键索引扫描作为表链接匹配条件,对于每一个索引键,表中只有一条记录与之匹配。
    ref:ref与eq_ref的区别就是eq_ref使用的是唯一索引或者主键索引。
    range:range使用索引来检索给定范围的行数据,一般是在where后面使用between、大于小于号等
    index:表示会遍历索引树,但是出现index说明需要检查自己的索引是否使用正确。
    ALL:全表查询。

    possible_keys: 表示这一列查询语句可能使用到的索引

    key字段: 表示的真正使用到的索引

    key_len字段: 表示sql查询语句中索引使用到的字节数,这个字节数并不是实际的长度,而是通过计算查询中使用到的索引中的长度得出来的,显示的是索引字段最大的可能长度。

    ref字段:

    rows字段: rows表示估算的要扫描的行数。

    Extra字段:

    Using index: 表示查询的列被索引覆盖,这个是查询性能比较高的体现,即所要查询的信息搜在索引里面可以得到,不用回表。

    Using where:该属性与Using index相反,查询的列并没有被索引覆盖,where条件后面使用的是非索引的前导列。

    partitions、filtered字段: partitions表示所匹配的分区;filtered表示的是查询表行所占表的百分比。

  • 相关阅读:
    eureka
    最长公共上升子序列
    [附源码]Java计算机毕业设计SSM动漫下载网站
    Adobe Creative Cloud没有管理应用程序的权限怎么办?
    FOC:【1】浅析SVPWM算法(七段式)以及MATLAB仿真验证
    功夫在诗外的几层意思
    【python】学会这八个自动化脚本,摸鱼的借口那不就来啦~
    WEB3 solidity 带着大家编写测试代码 操作订单 创建/取消/填充操作
    浏览器输入URL后到服务器返回数据大体过程
    创建spring boot后启动报错: Failed to bind properties under ‘spring.datasource‘
  • 原文地址:https://blog.csdn.net/qq_37772958/article/details/127826215