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 join、right join 主表将是固定的,但是inner join mysql会选择出最优的主表,如果在使用inner join不想托管mysql优化这一过程可以使用STRAIGHT_JOIN
参考 https://dev.mysql.com/doc/internals/en/tracing-example.html