- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章_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);
您可能关注的文档
最近下载
- 第八课 学习借鉴外来文化的有益成果课件-高考政治一轮复习统编版必修四哲学与文化.pptx VIP
- 展示设计(全套课件176P) PPT课件.pptx
- 做知法守法好少年(教学设计)-2023-2024学年五年级下册综合实践活动全国通用.docx VIP
- GBT13477.1-2002 建筑密封材料试验方法 第1部分试验基材的规定.pdf
- 《医疗保障基金飞行检查管理暂行办法》培训试题附有答案.docx
- 理解当代中国 英语读写教程Unit 2 英语读写教程课件.pptx VIP
- 一种用于CBCT图像的超分辨率方法.pdf VIP
- 2025年涉密基础测绘成果资料提供、使用审批流程图.pdf VIP
- 船舶英语手册.pdf VIP
- 做知法守法好少年(课件)五年级下册综合实践活动.pptx VIP
有哪些信誉好的足球投注网站
文档评论(0)