什么时候使用绑定变量性能反而更差

什么时候使用绑定变量性能反而更差

ID:6335924

大小:76.00 KB

页数:10页

时间:2018-01-10

什么时候使用绑定变量性能反而更差_第1页
什么时候使用绑定变量性能反而更差_第2页
什么时候使用绑定变量性能反而更差_第3页
什么时候使用绑定变量性能反而更差_第4页
什么时候使用绑定变量性能反而更差_第5页
资源描述:

《什么时候使用绑定变量性能反而更差》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、什么时候使用绑定变量性能反而更差作者:fuyuncat来源:www.HelloDBA.com当我在做培训时,在解释绑定变量的好处时,大家都比较容易理解。但是,对于并不是任何时候绑定变量都是最优的。这一点很多人不是和理解。下面就讨论一下在什么时候会出现绑定变量会使性能变差。扫描成本和OPTIMIZER_INDEX_COST_ADJ我们知道,在CBO模式下,Oracle会计算各个访问路径的代价,采用最小代价的访问路径作为语句的执行计划。而对于索引的访问代价的计算,需要根据一个系统参数OPTIMIZER_INDEX_COST_ADJ来转换为与全表扫描代价等价的一个值。这是什么意思呢?我们先稍微解释

2、一下这个参数:OPTIMIZER_INDEX_COST_ADJ。它的值是一个百分比,默认是100,取值范围是1~10000。当估算索引扫描代价时,会将索引的原始代价值乘以这个百分比,将换算后的值作为与全表扫描代价比较的值。也就是说,当这个值为100时,计算出的索引扫描代价就是它的原始代价:COST_COM=COST_ORG*OPTIMIZER_INDEX_COST_ADJ/100看以下例子:SQL>createtableT_PEEKING(aNUMBER,bchar(1),cchar(2000)); Tablecreated. SQL>SQL>createindexT_PEEKING_IDX

3、1onT_PEEKING(b); Indexcreated.  SQL>begin 2   foriin1..1000loop 3     insertintoT_PEEKINGvalues(i,'A',i); 4   endloop; 5 6   insertintoT_PEEKINGvalues(1001,'B',1001); 7   insertintoT_PEEKINGvalues(1002,'B',1002); 8   insertintoT_PEEKINGvalues(1003,'C',1003); 910   commit;11 end;12 / PL/SQLprocedure

4、successfullycompleted. 注意,我们给索引字段B插入的值中只有3个distinct值,记录数是1003,它的集的势很高(1003/3)=334。关于集的势的计算,可以参考我的另外一篇文档《关于集的势的计算》。 SQL>SQL>analyzetableT_PEEKINGcomputestatisticsfortableforallindexesforallindexedcolumns; Tableanalyzed. SQL>我们看下索引扫描的代价是多少:SQL>showparameterOPTIMIZER_INDEX_COST_ADJ NAME               

5、                 TYPE       VALUE-----------------------------------------------------------------------------optimizer_index_cost_adj            integer    100 SQL>deletefromplan_table; 0rowsdeleted.  SQL>explainplanforselect/*+index(aT_PEEKING_IDX1)*/*fromT_PEEKINGawhereb=:V; Explained. SQL>selec

6、tlpad('',2*(level-1))

7、

8、operation

9、

10、''

11、

12、options

13、

14、''

15、

16、 2        object_name

17、

18、''

19、

20、decode(id,0,'Cost='

21、

22、position)"Query 3 Plan_Table" 4     fromplan_table 5     startwithid=0 6     connectbypriorid=parent_id 7 ; QueryPlan_Table-----------------------------------------------------------------------------

23、---SELECTSTATEMENT  Cost=113 TABLEACCESSBYINDEXROWIDT_PEEKING   INDEXRANGESCANT_PEEKING_IDX1 SQL> 再看全表扫描的代价是多少:SQL>deletefromplan_table; 3rowsdeleted. SQL>SQL>explainplanforselect/*+full(a)*/*fromT_PEEKINGa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。