1.sql语句的执行计划,可以通过explain查看,有三种格式,traditional、json和tree;
默认是传统格式,可以通过explain format=tree/json sql来选择其他格式
如
explain format=tree select count(*) from customer inner join payment using(customer_id) where store_id = 1G;
2.执行计划是由优化器进行选择的,通过设置优化器跟踪可以了解选择执行路径的原因
使用优化器跟踪分为四步,
- 打开优化器跟踪功能:set optimizer_trace = "enabled=on"
- 执行需要跟踪的sql语句
- 查询视图information_schema.optimizer_trace
- 关闭优化器跟踪功能,set optimizer_trace = "enabled=off"
通常可以通过workbench,mysql enterprise monitor等数据库工具找出消耗资源最多的sql语句,当然也可以sys视图来找出需要优化的sql;
最需要优化的sql并不是指的单次执行时间最长的sql语句,而应该是总计执行时间最长的sql语句,它等于执行次数乘以单次执行时间。
sys数据库视图是建立在performance_schema数据库上的,在sys.statement_analysis中找出总计执行时间最长的sql,同样也可以在performance_schema.events_statements_summary_by_digest查找
如
- 如果要清空以前的sql语句并重新进行统计,执行如下存储过程:
call sys.ps_truncate_all_tables(false);