工作时间AM:09:00--PM:20:00

WORKINGTIME

0898-08980898免费咨询

0898-08980898
邮箱:
admin@eyoucms.com
电话:
0898-08980898
传真:
0000-0000-0000
手机:
13800000000
地址:
海南省海口市
新闻资讯
当前位置: 首页 > 新闻资讯
mysql 通过optimizer_trace查看sql优化过程  上传时间:2024-04-07 23:57:01

mysql 版本5.7.31

 
 

初始化数据

 
 
 
 
 
 

准备工作 对查询分解标号 如果内查询会有 “select#”: 1、 “select#”: 2 … 这个标号后面会用到
下面是具体优化过程

 

where 条件优化:
注意前面索引

 

所以可以看出mysql 5.7能够根据索引字段的顺序调整查询条件顺序

 

ref_optimizer_key_uses 外键索引判断
注意: null_rejecting表示判断外键字段是不是会因为包含null值而拒绝使用

 

test_index是创建的覆盖索引
可以看到该索引覆盖的字段包含title,vtype,id 这也验证了联合索引中包含主键,如果从索引中取不到全部的查询字段会通过主键会表

 

considered_execution_plans 是联表顺序优化
因为关联查询首先会根据条件筛选主表,然后再loop主表的数据查询出关联表的数据,如果是left joinright join 主表将是固定的,但是inner join mysql会选择出最优的主表,如果在使用inner join不想托管mysql优化这一过程可以使用STRAIGHT_JOIN

 

参考 https://dev.mysql.com/doc/internals/en/tracing-example.html

平台注册入口