执行计划与如何找出需要优化的sql语句
2023-06-13 09:16:23 时间
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"
通常可以通过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);
相关文章
- 什么是pl/sql语句_过程化SQL有三种循环结构
- Mysql实战之一条SQL查询语句是如何执行的
- Oracle中如何生成有用的SQL 执行计划(译)
- 性能优化 Oracle如何固定执行计划 SQL PROFILE概要文件分析
- Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
- oracle查看执行最慢与查询次数最多的sql语句
- 文件MySQL如何批量导入SQL文件(mysql导入sql)
- MySQL的更新SQL实用技巧(mysql更新sql)
- sql通过Oracle实现批量执行SQL语句(oracle批量执行)
- /sql数据库应用:Oracle PL/SQL编程(oraclepl)
- Oracle中的SQL语句学习指南(oracle的sql语句)
- sql探索64位Oracle数据库的SQL语言(64oracle)
- MySQL SQL的执行顺序及优化技巧(mysqlsql顺序)
- 优化MySQL数据库性能优化:克服耗时SQL问题(mysql耗时sql)
- 如何防范SQL注入攻击:MySQL的几种安全策略(sql注入mysql)
- 如何使用SQL快速导入MSSQL数据库(sql如何导入mssql)
- 如何使用MySQL定时自动执行SQL语句(mysql定时执行sql)
- 如何排查慢的 Oracle SQL?(oracle慢的sql)
- Linux系统下执行SQL脚本文件的技巧(linux执行sql文件)
- 提升效率:用MySQL查看SQL代码的性能(mysql查看sql执行效率)
- MySQL中如何筛选不为空的SQL语句(mysql中sql不为空)
- SQL访问Redis新技术所带来的变革(sql 访问 redis)
- Oracle SQL语句实现列数据修改(oracle修改列sql)
- 利用Oracle中的执行计划提升SQL性能(oracle中的执行计划)
- 探索Oracle中SQL查询差集的玄机(oracle中sql差集)
- 执行Oracle SQL脚本中的exec指令(oracle中 exec)
- 鉴Oracle SQL迎接新的一年(oracle sql 年)
- 如何利用PHP执行.SQL文件
- C#执行SQL事务用法实例