最新活动:电脑PC端+手机端+微网站+自适应网页多模板选择-建站388元起价!!!
当前位置:主页 > SEO优化 > 浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化SEO优

浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化SEO优

时间:2023-05-23 23:05:23 阅读: 文章分类: SEO优化 作者: 网络小编

导读:2SEO优化本篇文章小编为大家介绍一下,浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献。有需要的朋友可以参考一下seo网站关键词优化seo网站优化。

seo网站关键词优化seo网站优化我们知道PL/SQL程序中运行SQL语句是存在开销的,因为SQL语句是要提交给SQL引擎处理这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换,每次却换时,都有额外的开销

请看下图:

但是,FORALL和BULK COLLECT可以让PL/SQL引擎把多个上下文却换压缩成一个,这使得在PL/SQL中的要处理多行记录的SQL语句执行的花费时间骤降请再看下图:

下面详解这爷俩㈠ 通过BULK COLLECT 加速查询⑴ BULK COLLECT 的用法采用BULK COLLECT可以将查询结果一次性地加载到collections中,而不是通过cursor一条一条地处理可以在select into ,fetch into , returning into语句使用BULK COLLECT注意在使用BULK COLLECT时,所有的INTO变量都必须是collections举几个简单例子:① 在select into语句中使用bulk collect

复制代码 代码如下:

DECLARE TYPE sa高端网站建设llist IS TABLE OF employees.salary%TYPE;sals sallist;BEGINSELECT salary BULK COLLECT INTO sals FROM employees where rownum<=50;--接下来使用集合中的数据END;/

② 在fetch into中使用bulk collect

复制代码 代码如下:

DECLARETYPE deptrectab IS TABLE OF departments%ROWTYPE;dept_recs deptrectab;CURSOR cur IS SELECT department_id,department_name FROM departments where department_id>10;BEGINOPEN cur;FETCH cur BULK COLLECT INTO dept_recs;--接下来使用集合中的数据END;/

③ 在returning into中使用bulk collect

复制代码 代码如下:

CREATE TABLE emp AS SELECT * FROM employees;

DECLARE TYPE numlist IS TABLE OF employees.employee_id%TYPE;enums numlist;TYPE namelist IS TABLE OF employees.last_name%TYPE;names namelist;BEGINDELETE emp WHERE department_id=30RETURNING employee_id,last_name BULK COLLECT INTO enums,names;DBMS_OUTPUT.PUT_LINE('deleted'||SQL%ROWCOUNT||建设网站'rows:');FOR i IN enums.FIRST .. enums.LASTLOOPDBMS_OUTPUT.PUT_LINE('employee#'||enums(i)||':'||names(i));END LOOP;END;/

deleted6rows:employee#114:Raphaelyemployee#115:Khooemployee#116:Baidaemployee#117:Tobiasemployee#118:Himuroemployee#119:Colmenares

EATE TABLE emp AS SELECT * FROM employees;DECLARE TYPE numlist IS TABLE OF employees.employee_id%TYPE; enums numlist; TYPE namelist IS TABLE OF employees.last_name%TYPE; names namelist;BEGIN DELETE emp WHERE department_id=30 RETURNING employee_id,last_name BULK COLLECT INTO enums,names; DBMS_OUTPUT.PUT_LINE('deleted'||SQL%ROWCOUNT||'rows:'); FOR i IN enums.FIRST .. enums.LAST LOOP DBMS_OUTPUT.PUT_LINE('employee#'||enums(i)||':'||names(i)); END LOOP;END;/deleted6rows:employee#114:Raphaelyemployee#115:Khooemployee#116:Baidaemployee#117:Tobiasemployee#118:Himuroemployee#119:Colmenares

关键词标签: 浅谈 SQL 批处理

声明: 本文由我的SEOUC技术文章主页发布于:2023-05-23 ,文章浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化SEO优主要讲述批处理,浅谈,SQL网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/seo_6180.html

我的IDC 网站建设技术SEOUC.COM
专注网站建设,SEO优化,小程序设计制作搭建开发定制网站等,数千家网站定制开发案例,网站推广技术服务。
  • 5000+合作客服
  • 8年从业经验
  • 150+覆盖行业
  • 最新热门源码技术文章