使用绑定变量提升 PL/SQL 程序性能
2014-12-25 21:39
399 查看
考虑下面两段程序
第一段程序使用硬编码, 查询使用的where 条件直接使用 i 的值. 第二段程序使用绑定变量, 并在运行是传入 i 的值.
两段程序的差别在于, 第一段对于每次查询都需要重新解析查询语句, 总共解析了1000 次; 但是第二段只解析了一次, 以后每次查询都从共享池中调用相同的代码.
所以第一段程序总共用了 3分多钟. 第二段程序用了不到 2秒钟.
declare type rc is ref cursor; l_rc rc; l_dummy all_objects.object_name%type; l_start number default dbms_utility.get_time; begin for i in 1..1000 loop open l_rc for 'select object_name from all_objects where object_id ='||i; fetch l_rc into l_dummy; close l_rc; end loop; dbms_output.put_line (round((dbms_utility.get_time-l_start)/100, 2)|| 'seconds...'); end; /
declare type rc is ref cursor; l_rc rc; l_dummy all_objects.object_name%type; l_start number default dbms_utility.get_time; begin for i in 1..1000 loop open l_rc for 'select object_name from all_objects where object_id = :x' using i; fetch l_rc into l_dummy; close l_rc; end loop; dbms_output.put_line (round((dbms_utility.get_time-l_start)/100, 2)|| 'seconds...'); end; /
第一段程序使用硬编码, 查询使用的where 条件直接使用 i 的值. 第二段程序使用绑定变量, 并在运行是传入 i 的值.
两段程序的差别在于, 第一段对于每次查询都需要重新解析查询语句, 总共解析了1000 次; 但是第二段只解析了一次, 以后每次查询都从共享池中调用相同的代码.
所以第一段程序总共用了 3分多钟. 第二段程序用了不到 2秒钟.
相关文章推荐
- 有关pl/sql的游标, 文本拼接和绑定变量使用小心得.
- 在PL/SQL中使用游标、动态sql和绑定变量的小例子
- oracle 使用绑定变量极大的提升性能
- PL/SQL拼接和使用绑定变量
- PL/SQL拼接和使用绑定变量
- pl/sql 程序中的变量使用实例
- 收藏:PL/SQL中使用Bulk Binds来提高性能
- 使用Function查找未使用绑定变量的SQL
- c#中里有pl/sql匿名块和绑定变量在执行insert后获取当前序列值
- pl/sql中在where in()子句里怎么使用字符串变量来传递查询条件?
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- PL/SQL中游标和游标变量的使用
- 使用pl/sql developer开发工具无法编译存储过程,触发器,包等程序文件
- pl/sql 基础---定义并使用变量!
- 在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量
- 在php中使用绑定变量的方法(Oracle SQL共享的机制)
- 游标变量、动态sql及变量绑定的使用
- PL/SQL性能优化工具profiler的部署和使用
- PL/SQL Developer插件编程的绑定变量问题
- oracle PL/SQL 中变量绑定用法