简介

step 1
使用explain 查看执行计划, 5.6后可以加参数 explain format=json xxx 输出json格式的信息

step 2
使用profiling详细的列出在每一个步骤消耗的时间,前提是先执行一遍语句

  1. #打开profiling 的设置
  2. SET profiling = 1;
  3. SHOW VARIABLES LIKE '%profiling%';
  4. #查看队列的内容
  5. show profiles;
  6. #来查看统计信息
  7. show profile block io,cpu for query 3;

step 3
Optimizer trace是MySQL5.6添加的新功能,可以看到大量的内部查询计划产生的信息, 先打开设置,然后执行一次sql,最后查看information_schema.OPTIMIZER_TRACE的内容

  1. #打开设置
  2. SET optimizer_trace='enabled=on';
  3. #最大内存根据实际情况而定, 可以不设置
  4. SET OPTIMIZER_TRACE_MAX_MEM_SIZE=1000000;
  5. SET END_MARKERS_IN_JSON=ON;
  6. SET optimizer_trace_limit = 1;
  7. SHOW VARIABLES LIKE '%optimizer_trace%';
  8. #执行所需sql后,查看该表信息即可看到详细的执行过程
  9. SELECT * FROM `information_schema`.`OPTIMIZER_TRACE`;