zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

执行计划与如何找出需要优化的sql语句

2023-02-18 16:47:27 时间

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 = 1\G;

2.执行计划是由优化器进行选择的,通过设置优化器跟踪可以了解选择执行路径的原因

使用优化器跟踪分为四步,

  • 打开优化器跟踪功能:set optimizer_trace = "enabled=on"
  • 执行需要跟踪的sql语句
  • 查询视图information_schema.optimizer_trace
  • 关闭优化器跟踪功能,set optimizer_trace = "enabled=off"
3.找出需要优化的sql

通常可以通过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);