oracle 使用绑定变量性能反而更差?(4)_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

oracle 使用绑定变量性能反而更差?(4)

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

本篇关键词:Oracle数据库Oracle教程
黑客防线网安网讯:    select * fromt_peeking a where b = :vcall count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------parse 1 0.0...

    select *
from
t_peeking a where b = :v


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
parse 1 0.00 0.00 0 0 0 0
execute 1 0.00 0.00 0 0 0 0
fetch 68 0.01 0.07 0 406 0 1000
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 70 0.01 0.08 0 406 0 1000

misses in library cache during parse: 1
optimizer mode: choose
parsing user id: sys

rows row source operation
------- ---------------------------------------------------
1000 table access full t_peeking (cr=406 pr=0 pw=0 time=5052 us)
  但是绑定变量窥视对一条语句只会使用一次就是说在第一次解析语句时,将绑定变量值考虑进去计算成本生成查询计划以后在执行该语句时都采用这个查询计划,而不再考虑以后绑定变量的值是什么了。
sql> conn sys/sys as sysdba
connected.
sql>
sql>
sql> set autot trace
sql>
sql> alter session set sql_trace = true;

session altered.

sql>
sql> var v char(1)
sql>
sql> exec :v := 'b';

pl/sql procedure successfully completed.

sql>
sql> select * from t_peeking a where b = :v;

1000 rows selected.

sql>
sql> alter session set sql_trace = false;

session altered.
  再用tkprof分析生成的trace文件,看到尽管这里的值是"b",选择索引扫描会更优,但分析结果中查询计划还是使用全表扫描:
select *
from
t_peeking a where b = :v


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
parse 1 0.00 0.00 0 0 0 0
execute 1 0.00 0.00 0 0 0 0
fetch 2 0.00 0.00 0 340 0 2
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.00 0.00 0 340 0 2

misses in library cache during parse: 0
optimizer mode: choose
parsing user id: sys

rows row source operation
------- ---------------------------------------------------
2 table access full t_peeking (cr=340 pr=0 pw=0 time=1005 us)
  因此,这种情况下使用绑定变量也会导致无法选择最优的查询计划。
  综上所述,我们可以得出一个结论:在对建有索引的字段(包括字段集),且字段(集)的集的势非常大时,使用绑定变量可能会导致查询计划错误,因而会使查询效率非常低。

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-13189-1.html
网站维护教程更新时间:2012-03-23 00:51:35  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer