• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL如何基于Explain关键字优化索引功能
    POST TIME:2021-10-18 19:54

      explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。

      explain关键字的使用方法很简单,就是把它放在select查询语句的前面。

      mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引。

    比如:explain select * from company_info where cname like '%小%'

      

    explain select * from company_info where cname like '小%'

    以下

    1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。

    2)、select_type列常见的有:

    3)、table

    显示的查询表名,如果查询使用了别名,那么这里显示的是别名,如果不涉及对数据表的操作,那么这显示为null,如果显示为尖括号括起来的derived N>就表示这个是临时表,后边的N就是执行计划中的id,表示结果来自于这个查询产生。如果是尖括号括起来的union M,N>,与derived N>类似,也是一个临时表,表示这个结果来自于union查询的id为M,N的结果集。

    4)、type

    依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL,除了all之外,其他的type都可以使用到索引,除了index_merge之外,其他的type只可以用到一个索引

    5)、possible_keys

    查询可能使用到的索引都会在这里列出来

    6)、key

    查询真正使用到的索引,select_type为index_merge时,这里可能出现两个以上的索引,其他的select_type这里只会出现一个。

    7)、key_len

    用于处理查询的索引长度,如果是单列索引,那就整个索引长度算进去,如果是多列索引,那么查询不一定都能使用到所有的列,具体使用到了多少个列的索引,这里就会计算进去,没有使用到的列,这里不会计算进去。留意下这个列的值,算一下你的多列索引总长度就知道有没有使用到所有的列了。要注意,mysql的ICP特性使用到的索引不会计入其中。另外,key_len只计算where条件用到的索引长度,而排序和分组就算用到了索引,也不会计算到key_len中。

    8)、ref

    如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func

    9)、rows

    这里是执行计划中估算的扫描行数,不是精确值

    10)、extra

    这个列可以显示的信息非常多,有几十种,常用的有

    除了这些之外,还有很多查询数据字典库,执行计划过程中就发现不可能存在结果的一些提示信息

    11)、filtered

    使用explain extended时会出现这个列,5.7之后的版本默认就有这个字段,不需要使用explain extended了。这个字段表示存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例,注意是百分比,不是具体记录数。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • MySQL查询语句过程和EXPLAIN语句基本概念及其优化
    • mysql开启慢查询(EXPLAIN SQL语句使用介绍)
    • mysql explain的用法(使用explain优化查询语句)
    • Mysql调优Explain工具详解及实战演练(推荐)
    • Mysql explain用法与结果深入分析
    • 详解mysql中explain的type
    • Mysql深入探索之Explain执行计划详析
    • MySQL索引优化Explain详解
    • MYSQL 性能分析器 EXPLAIN 用法实例分析
    • MySQL中通过EXPLAIN如何分析SQL的执行计划详解
    • MySQL EXPLAIN语句的使用示例
    上一篇:MySQL Like模糊查询速度太慢如何解决
    下一篇:MySQL基于group_concat()函数合并多行数据
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信