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

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

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

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

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

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

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

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

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

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

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

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

(1)explain plan for <sql语句>

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表

4plan_table表常用列的定义

5手工查询plan_table表举例

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

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

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

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

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

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值