- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章_p的l-sql集合与记录2_-_pl-sql用户指南与参考
第五章 PL/SQL 集合与记录 (2)
十二、使用集合批量绑定减少循环开销
如下图所示,PL/SQL 引擎会执行过程化语句,但它把SQL 语句发送给SQL 引擎处理,然后SQL 引擎把
处理的结果返回给PL/SQL 引擎。
PL/SQL 和SQL 引擎间的频繁切换会大大降低效率。典型的情况就是在一个循环中反复执行SQL 语句。
例如,下面的DELETE 语句就会在FOR 循环中被多次发送到SQL 引擎中去:
DECLARE
TYPE numlist IS VARRAY(20) OF NUMBER;
depts numlist : numlist(10, 30, 70); -- department numbers
BEGIN
...
FOR i IN depts.FIRST .. depts.LAST LOOP
DELETE FROM emp
WHERE deptno depts(i);
END LOOP;
END;
这种情况下,如果SQL 语句影响了四行或更多行时,使用批量绑定就会显著地提高性能。
1、批量绑定如何提高性能
用SQL 语句中为PL/SQL 变量赋值称为绑定,PL/SQL 绑定操作可以分为三种:
1. 内绑定(in-bind):用INSERT 或UPDATE 语句将PL/SQL 变量或主变量保存到数据库。
2. 外绑定(out-bind):通过INSERT、UPDATE 或DELETE 语句的RETURNING 子句的返回值
为PL/SQL 变量或主变量赋值。
3. 定义(define):使用SELECT 或FETCH 语句为PL/SQL 变量或主变量赋值。
DML 语句可以一次性传递集合中所有的元素,这个过程就是批量绑定。如果集合有20 个元素,批量绑定
的一次操作就相当于执行20 次SELECT、 INSERT、UPDATE 或DELETE 语句。这项技术是靠减少
PL/SQL 和SQL 引擎间的切换次数来提高性能的。要对INSERT、UPDATE 和 DELETE 语句使用批量绑
定,就要用PL/SQL 的FORALL 语句。
如果要在SELECT 语句中使用批量绑定,我们就要在SELECT 语句后面加上一个BULK COLLECT 子句
来代替INTO 子句。
例一:对DELETE 语句应用批量绑定
下面的DELETE 语句只往SQL 引擎中发送一次,即使是执行了三次DELETE 操作:
DECLARE
TYPE numlist IS VARRAY(20) OF NUMBER;
depts numlist : numlist(10, 30, 70); -- department numbers
BEGIN
FORALL i IN depts.FIRST .. depts.LAST
DELETE FROM emp
WHERE deptno depts(i);
END;
例二:对INSERT 语句应用批量绑定
下例中,我们把5000 个零件编号和名称放到索引表中。所有的表元素都向数据库插入两次:第一次使用
FOR 循环,然后使用FORALL 语句。实际上,FORALL 版本的代码执行速度要比FOR 语句版本的快得多。
SQL SET SERVEROUTPUT ON
SQL CREATE TABLE parts (pnum NUMBER(4), pname CHAR(15));
Table created.
SQL GET test.sql
1 DECLARE
2 TYPE NumTab IS TABLE OF NUMBER(4) INDEX BY BINARY_INTEGER;
3 TYPE NameTab IS TABLE OF CHAR(15) INDEX BY BINARY_INTEGER;
4 pnums NumTab;
5 pnames NameTab;
6 t1 NUMBER(5);
您可能关注的文档
- 串联谐振高的压试验原理方法.pdf
- 从_琉球百问_看清代中叶琉球贵族的疾病与社会生活.pdf
- 从交通综合体到城市综合体_论交通枢纽型商业中心的开发.pdf
- 从复杂网络的到系统生物学-吕金虎-2012中国网络科学论坛.pdf
- 从俗文学看明清的城市与乡村、中央与地方.pdf
- 从嬉皮到雅皮(詹姆士.克利夫德[美国] 李二仕 梅蜂译)(陕西师范大学出版社 1999年3月).pdf
- 打孔机高压水泵型号参数价格及结构图.pdf
- 大城市市郊轨道交通运营组织模式研究.pdf
- 大规模风电的特高压专用通道落点优选方法 1.pdf
- 大口径高压电动闸阀.pdf
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)