Oracle sql优化(三)SQL执行计划

1使用EXPLAIN PLAN生成预期查询计划,输出将包括:

(1)sql语句中所引用的每一张表

(2)访问每张表所用的方法

(3)每一对需要联结的数据源所用的联结方法

(4)按次序列出所有需要完成的运算

(5)计划中各步骤的谓语信息列表

(6)对于每个运算,估计出该步骤所要操作的数据行数和字节数

(7)对于每个运算,计算出成本值

(8)如果适用,所访问的分区信息

(9)如果适用,并行执行的相关信息

2生成解释计划两种方式(注:均是生成预期的执行计划,不实际执行查询。)

(1)explain plan for

select * from table (dbms_xplan.display);

(2)sqlplus autotrace命令

打开autotrace

set autotrace traceonly explain

执行sql语句

注:(1)看到的信息均是由expain plan 命令生成并默认存储在表plan_table中的。

(2)解释计划只列出了plan_table的一小部分列,dbms_xplan.display可以根据sql语句所生成的执行计划自动显示适当的列。

例如:如果计划中使用了分区运算,在输出中就会包含partition_start、partition_stop、partition_id这些列。

3plan_table表

Oracle sql优化(三)SQL执行计划_第1张图片

Oracle sql优化(三)SQL执行计划_第2张图片

4plan_table表常用列的定义

Oracle sql优化(三)SQL执行计划_第3张图片

Oracle sql优化(三)SQL执行计划_第4张图片

5手工查询plan_table表举例

Oracle sql优化(三)SQL执行计划_第5张图片

6partent_id列:表示计划中的父子关系

只有一个子运算的运算可以分为以下3类:

加工运算:从子运算接收一个数据行集经过加工以后传递给其父运算

传递运算:只起传递作用不对来自子运算的数据做任何加工。基本上用来确定某个运算的特性,view运算就是传递运算的一个很好的例子。

迭代运算:表示子运算要多次执行,通常会在这类运算的名字上看到iterator、inlist、all字眼。

 

 

 

你可能感兴趣的:(oracle)