explain plan初接触

利用 explain plan,我们可以查看oracle优化器用来执行sql语句的查询计划。同trace相比,explain plan由于不用进行查询跟踪,只是分析执行计划,所以使用起来更为快速便捷。使用explain plan分析sql语句后,会在表plan_table中插入数据,查询该表即可获取sql执行计划,从而为开展sql优化提供方便。

一个简单的例子:

explain plan set statement_id='pay' for select * from pay where id>333

执行后,会在plan_table中插入数据,执行如下查询:

select lpad('',2*(level-1))||level||'.'||nvl(position,0)||' '||
    operation||' '||options||' '||object_name||' '||object_type
    ||' '||decode(id,0,statement_id||'cost='||position)||cost
    ||' '||object_node"query plan"
    from plan_table start with id=0 and statement_id='pay'
    connect by prior id=parent_id and statement_id='pay'

,即可得到相应的sql执行计划:

1.1022 SELECT STATEMENT    paycost=10221022
2.1 TABLE ACCESS FULL PAY  1022

注意,由于此处查询plan_table是采用从上至下的方式读取,所以阅读时应该由内向外阅读,即2。1先于1。1

执行。显然,此处由于表没有设置索引,所以查询为全表查询,开销是很大的。所以,借助此分析结果便可以

考虑进行sql优化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值