开发者社区 > 数据库 > 正文

如何判断语句是否已最优?

如何判断语句是否已最优?

展开
收起
vncamyi27xznk 2021-12-25 17:20:50 319 0
1 条回答
写回答
取消 提交回答
  • image.png

    用户可以通过Explain判断语句是否已最优,其中Type与Extra的主要类型与含义如下: ·Type 1)ALL:Full Table Scan 全表扫描; 2)index: Full Index Scan,索引扫描; 3)range:范围扫描; 4)ref: 表示连接匹配条件; 5)eq_ref: 类似ref,区别就在使用的索引是唯一索引; 6)const: 常量查询,比如pk等值; 7)system是Const类型的特例;当查询的表只有一行的情况下,使用system。 从性能角度来看,从上往下性能越来越高,根据《开发手册》,此处最低要求是到Range范围扫描。 ·Extra 1)Using filesort 排序; 2)Using index 使用索引可以返回请求列; 3)Using index condition 通过索引初步过滤;回表再过滤其它条件; 4)Using temporary 临时表; 5)Using where 单独出现时;一般代表表上出现全表扫描过滤; 6)Using index & Using where 使用索引返回数据;同时通过索引过滤。 Extra反映了执行计划的真实执行情况。 结合上图执行计划分析,C表是外部驱动表,索引方式为idx_pk,Type是Range,Extra有Using index condition、Using where以及Using MRR,表示进行全表扫描,通过索引初步过滤,回表B再过滤其他条件。B表是从外表取数据做内循环,索引方式为i_text,扫描的列为c.b.KeyNo,这种情况说明这个执行计划相对完善。

    答复内容摘自《深入MySQL实战》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1167

    2021-12-25 18:36:39
    赞同 展开评论 打赏
问答地址:

数据库领域前沿技术分享与交流

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载