Oracle查看执行计划的实战指南(oracle查看执行计划)
Oracle数据库中的SQL语句的执行计划,明确的标识了使用哪些数据库优化器操作来执行SQL语句,执行计划中同时也提供了很多有用的信息用来帮助我们检查SQL语句运行时间等性能指标,理解和优化SQL语句同样需要对Oracle数据库的SQL执行计划有所了解。
本文将会介绍如何使用Oracle查询数据库上执行计划,让我们熟悉该过程,以提高我们在使用和管理数据库时SQL优化的能力。
首先,必须明确的是:如何使用Oracle查看执行计划。Oracle有两种查看执行计划的方法:一种是SQL语句中的EXPLAIN PLAN;第二种是Oracle数据库本身的工具:V$SQL_PLAN视图。
使用EXPLAIN PLAN:
方法:首先需要创建一个书架,书架的定义如下:
语句:
(1) create table plan_table(
statement_id varchar2(30) not null,
plan_id number not null,
timestamp date not null,
remarks varchar2(80),
operation varchar2(30),
options varchar2(30),
object_node varchar2(128),
object_owner varchar2(30),
object_namevarchar2(30),
object_instance number,
object_type varchar2(30),
optimizer varchar2(255),
search_columns number,
id number,
parent_id number,
depth number,
position number,
cost number,
cardinality number,
bytes number,
other_tag varchar2(255),
partition_start varchar2(255),
partition_stop varchar2(255),
partition_id number,
other long,
distribution varchar2(30)
);
接下来,我们使用EXPLAIN PLAN关键字查询语句,下面是一个示例:
SQL语句:select * from employees where salary>10000 order by salary desc;
查询语句:EXPLAIN PLAN FOR select * from employees where salary>10000 order by salary desc;
查看执行计划:SELECT * FROM plan_table;
使用V$SQL_PLAN视图:
该视图是Oracle 10g及以上版本提供的,可以显示当前执行或已执行过的SQL语句的执行计划。如下所示:
SQL语句:select * from employees where salary>10000 order by salary desc;
查看计划:
SELECT PLAN_TABLE_OUTPUT FROM V$SQL_PLAN WHERE SQL_TEXT LIKE ‘select * from employees where salary>10000 order by salary desc;’;
最后,使用Oracle查看执行计划的目的是为了学习如何优化数据库的SQL语句。了解查询计划输出的内容,对于更好的优化我们的SQL语句,特别是对于那些复杂的SQL语句而言,更有必要。因此,掌握使用Oracle查看执行计划,一定程度上可以提高我们的工作效率,和操作Oracle数据库的水平。