1.PLAN_table
column query_plan format a55
column cardinality format 99999
column cost format 99999
delete from plan_table;
set lines 100
set pages 100
set echo on
EXPLAIN PLAN FOR
SELECT *
FROM hr.employees JOIN hr.departments USING (department_id);
SELECT RTRIM (LPAD (' ', 2 * LEVEL) ||
RTRIM (operation) || ' ' ||
RTRIM (options) || ' ' ||
object_name) query_plan,
cost, cardinality
FROM plan_table
CONNECT BY PRIOR>
START WITH> SELECT * FROM TABLE(dbms_xplan.display());
2.查询总消耗时间最多的前10条sql语句:
SELECT sql_id, child_number, sql_text, elapsed_time
FROM (SELECT sql_id,
child_number,
sql_text,
elapsed_time,
cpu_time,
disk_reads,
rank() over(ORDER BY elapsed_time DESC) AS elapsed_rank
FROM v$sql)
WHERE elapsed_rank < 10;
通过sql_id得到执行计划:SQL> select * from table(dbms_xplan.display_cursor('bdfmh45d9vy9y',0,'TYPICAL'));
DBMS_XPLAN.display函数展示了PLAN_TABLE中的执行计划,而DISPLAY_CURSOR则展示了在v$sql_plan中缓存的执行计划的信息。
explain plan for SELECT department_name, last_name, job_title
FROM hr.employees
JOIN hr.departments
USING (department_id)
JOIN hr.jobs
USING (job_id)
7 ORDER BY department_name, job_title;
Explained.
SQL> select * from table(dbms_xplan.display(null,null,'TYPICAL -BYTES'));
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Plan hash value: 3301068746
--------------------------------------------------------------------------------------