MySQL 执行查询语句时需要进行的查询成本分析了,而 MySQL 提供的 trace 工具就可以让我们看到 MySQL 计算的查询成本,以及选择索引的大致分析过程。
-- 首先开启trace
mysql> set session optimizer_trace="enabled=on", end_markers_in_json=on;
-- 执行查询SQL
mysql> select * from employees where name > 'wei' order by position;
-- 查询trace字段
mysql> SELECT * FROM information_schema.OPTIMIZER_TRACE;
-- 当分析完SQL,关闭trace
mysql> set session optimizer_trace="enabled=off";
explain最常用的方法是将它放在要分析的sql的前面,如果加上format=json选项会输出json格式的分析数据,包含语句执行的成本信息
EXPLAIN format=json sql语句
另外,explain结合show warnings语句一起使用还可以得知优化器改写后的语句(为了试验效果,条件中可以加1=1检验一下)