简介
step 1
使用explain 查看执行计划, 5.6后可以加参数 explain format=json xxx 输出json格式的信息
step 2
使用profiling详细的列出在每一个步骤消耗的时间,前提是先执行一遍语句
#打开profiling 的设置
SET profiling = 1;
SHOW VARIABLES LIKE '%profiling%';
#查看队列的内容
show profiles;
#来查看统计信息
show profile block io,cpu for query 3;
step 3
Optimizer trace是MySQL5.6添加的新功能,可以看到大量的内部查询计划产生的信息, 先打开设置,然后执行一次sql,最后查看information_schema
.OPTIMIZER_TRACE
的内容
#打开设置
SET optimizer_trace='enabled=on';
#最大内存根据实际情况而定, 可以不设置
SET OPTIMIZER_TRACE_MAX_MEM_SIZE=1000000;
SET END_MARKERS_IN_JSON=ON;
SET optimizer_trace_limit = 1;
SHOW VARIABLES LIKE '%optimizer_trace%';
#执行所需sql后,查看该表信息即可看到详细的执行过程
SELECT * FROM `information_schema`.`OPTIMIZER_TRACE`;