sql oracle如何知道查询的哪一部分需要很长时间

时间:2016-09-05 05:09:15

标签: sql oracle performance

我有一个大型脚本,我用它来获取有关Employees的信息,该脚本包含许多查找和几个表之间的连接,我想知道,无论如何,我知道我可以知道脚本的哪个部分或哪个查找花费更多时间并使脚本变得非常慢,所以我只能调整它而不是尝试调整整个脚本,直到找到导致我麻烦的那个脚本。

我正在使用oracle 11g。

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用EXPLAIN PLAN查找执行工作流程,以及查询中消耗最多的部分。例如,如果您使用的是SQL Developer,则可以运行以下命令:

explain plan for
<your query>

然后运行:

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

它将以表格格式给出结果,如下所示: enter image description here

您可以查看时间和成本以及操作类型。例如,每当您看到“全表扫描”时,这是一个红色标记。

答案 1 :(得分:0)

如果你使用Tuning&amp;企业版上的诊断包也可以使用:

select dbms_sqltune.report_sql_monitor('<your SQL id>',report_level=>'ALL') plan_table_output from dual;

你的陈述的ID在哪里,例如。 dk25xwhpxvnwx,实际值可以通过sql_full_text列在v $ sqlarea中找到。

当EXPLAIN PLAIN仅提供估算时,它为执行计划的每个步骤提供实际时间。