XIN*_*ING 2 oracle plsql plsqldeveloper oracle11gr2
我想知道我们是否有任何技术可以计算出需要为批量收集操作的LIMIT子句设置的值.例如下面,假设我们的光标有1000万条记录.我们可以为LIMIT子句设置的值是什么,以获得最佳性能.我们有什么方法可以计算它.
decalre
cursor c_emp is <some select query>
var <variable> ;
begin
open c_emp;
loop
fetch c_emp bulk collect into var limit 2;
exit when c_emp%NOTFOUND;
end loop;
close c_emp;
end;
Run Code Online (Sandbox Code Playgroud)
在游标FOR LOOP中使用隐式游标.它使代码更简单,默认值100几乎总是足够好.
我见过很多人浪费了很多时间来担心这件事.如果您考虑为什么批量收集可以提高性能,您将理解为什么大数据无济于事.
批量收集通过减少SQL和PL/SQL之间的上下文切换来提高性能.想象一下极不可能的最坏情况,其中上下文切换耗尽了所有运行时间.限制为2可消除50%的上下文切换; 10消除了90%; 100消除了99%等.将其绘制出来你会发现它不值得找到最佳极限尺寸:
使用默认值.花时间担心更重要的事情.
| 归档时间: |
|
| 查看次数: |
2648 次 |
| 最近记录: |