使用执行计划进行 Sql 调优
Posted
技术标签:
【中文标题】使用执行计划进行 Sql 调优【英文标题】:Sql tuning using execution plan 【发布时间】:2020-04-05 17:26:15 【问题描述】:我有一个场景,其中 sql 查询(在封装在 proc 中的 oracle 11G 环境中)比平时花费更长的时间,因为没有内存/网络/查询问题,否则不会有任何额外的记录量。
在这种情况下,我想检查执行计划是否改变了?你能帮助我如何检查执行计划(检查的理想工具)以及如何恢复到该查询的旧执行计划吗?
【问题讨论】:
【参考方案1】:我假设您正在谈论在过程中使用的普通 sql 代码。 有三个选项可以检查执行计划, 一种。设置自动跟踪 traceonly 解释; 湾。使用 tkprof C。 sql/developer 工具,你会在菜单上看到一个图标,旁边有一个图标说明计划。
如果您详细了解 a 或 b,请告诉我,我们会给您一些样品。
要使用旧计划,您应该早点保存它,您保存了吗?,您可以尝试使用plan_table 搜索相同的计划。
【讨论】:
【参考方案2】:在 Oracle DB 中,您可以使用以下查询来检查 SQL 执行计划,您可以检查您的 SQL 是否正在执行索引或全表扫描。
EXPLAIN PLAN FOR SELECT * from TABLE_NAME where some_coloumn='PUT FILTER HERE';
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY());
【讨论】:
以上是关于使用执行计划进行 Sql 调优的主要内容,如果未能解决你的问题,请参考以下文章
ClickHouse 使用EXPLAIN 分析 SQL 执行计划
SQL Server 性能调优 之执行计划(Execution Plan)调优