1 PL/SQL块的执行过程

当PL/SQL运行时引擎处理一块代码时,它使用PL/SQL引擎来执行过程化的代码,而将SQL语句发送给SQL引擎来执行;

SQL引擎执行完毕后,将结果再返回给PL/SQL引擎。这种在PL/SQL引擎和SQL引擎之间的交互,称为上下文交换(context switch)。

每发生一次交换,就会带来一定的额外开销。

2 FORALL和BULK COLLECT特点

这两个语句在PL/SQL内部进行一种数组处理,BULK COLLECT提供对数据的高速检索,FORALL可大大改进INSERT、UPDATE和DELETE操作的性能。Oracle数据库使用这些语句大大减少了PL/SQL与SQL语句执行引擎的环境切换次数,从而使其性能有了显著提高。

FORALL,用于增强PL/SQL引擎到SQL引擎的交换。

BULK COLLECT,用于增强SQL引擎到PL/SQL引擎的交换。

如果你要插入5000条数据,一般情况下,在pl/sql中用for循环,循环插入5000次,而用forall一次就可以插入5000条,提高了性能和速度。

3 FORALL介绍

使用FORALL,可以将多个DML批量发送给SQL引擎来执行,最大限度地减少上下文交互所带来的开销。

3.1 FORALL语法

FORALL index_name IN

{ lower_bound .. upper_bound

| INDICES OF collection_name [ BETWEEN lower_bound AND upper_bound ]

| VALUES OF index_collection

oracle中bulk,Oracle数据库之FORALL与BULK COLLECT语句相关推荐

  1. Oracle中如何查找未使用绑定变量的SQL语句?

    Oracle中如何查找未使用绑定变量的SQL语句? 利用V$SQL 视图的 FORCE_MATCHING_SIGNATURE 字段可以识别可能从绑定变量或 CURSOR_SHARING 获益的 SQL ...

  2. oracle中实例与数据库的概念解释

    很容易混淆,这就是"实例 "(instance)和"数据库 "(database).作为Oracle术语,这两个词的定义如下: q 数据库 (database) ...

  3. oracle中命令,oracle中常用命令汇总(一)

    1.如何查看Oracle的数据库sid名称? 如果用sysdba身份登录.执行以下命令: SQL> conn / as sysdba; 已连接. SQL> select name from ...

  4. oracle中totimestamp,oracle中to_timestamp和to_date什么区别

    date类型是Oracle常用的日期型变量,时间间隔是秒.两个日期型相减得到是两个时间的间隔,注意单位是"天". timestamp是DATE类型的扩展,可以精确到小数秒(frac ...

  5. oracle中nextday,Oracle日期函数 next_day

    Oracle日期函数 next_day 在Oracle是提供了next_day求指定日期的下一个日期. 语法 : next_day( date, weekday ) date is used to f ...

  6. oracle中pdb,Oracle 12C新特性-CDB和PDB 详解

    最近看到好多人都在尝试Oracle中的12C新特性-容器数据库,今年3月Orcle推出了Release2版本,可以算是一个稳定版本了.下午着手尝试了一下,还是蛮不错得 1.前言 CDB与PDB是Ora ...

  7. oracle中primary,oracle中如何 Primary key自增

    oracle中如何 Priamry key自增 摸索了一晚上,终于实现了key的自增,现在将实现的过程总结如下: (1)首先创建一个表:这里是我创建的一个User表,包括id,user_name,pa ...

  8. oracle中submit,Oracle中DBMS_JOB.SUBMIT的用法说明

    Oracle中DBMS_JOB.SUBMIT的用法说明 用法DEMO: DBMS_JOB.SUBMIT(:jobno,//job号 'your_procedure;',//要执行的过程 trunc(s ...

  9. oracle中isnumeric,Oracle 中 isnumeric 的三种实现

    使用过 asp 的应该对 isnumeric 函数不会陌生,这是一个常用的判断入参是否为数字的函数.在 oracle 中没有现成的判断是否为数字函数,下面就用三种方法来实现: 1. 利用 to_num ...

最新文章

  1. 这样规范写代码,同事直呼“666”
  2. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器
  3. ElementUIz中el-checkbox-group多选框组的使用,怎样设置一组选项与获取所选值
  4. 时间类(时间戳的各种转换成)
  5. mysqladmin 设置用户名初始密码报错you need the SUPER privilege for this operation
  6. 2020-06-05 原始套接字/AF_PACKET链路层访问
  7. 虚函数和虚析构函数的实现原理--虚函数表
  8. flex项目学习包括什么内容
  9. Confluence 6 安全相关问题提交链接
  10. synchronized的实现原理用法详解
  11. win10怎样获得计算机管理员权限,详解Win10获取管理员权限的具体方法
  12. STM32F407 CAN Controller介绍(二)
  13. apicloud 获取手机虚拟键盘高度
  14. HTML常用meta小结
  15. git commit message——git提交日志规范备忘
  16. java-opencv文档
  17. CSS中padding属性的参数顺序
  18. 互联网热点:“双十一”节奏提前,猿辅导、掌门教育积极转型素质教育
  19. 大数据揭秘成都“堵车地图” 拥挤程度全国第9
  20. 2023最新红色风格电脑手机数码商城系统网站源码+仿华为商城UI开发

热门文章

  1. vue 得到枚举个数_vue项目中枚举值统一维护管理
  2. vue+node.js前后端交互中的token令牌验证
  3. Python选修课,期末大作业Pygame小游戏<Sharpshooter>
  4. Mac 升级后git pull 报错fatal: Authentication failed for 解决办法
  5. 盘点那些影响人类发展的伟大式子(持续更新)
  6. 【Markdown基础教程】段落分段换行详解
  7. JavaScript奇淫技巧:压缩并加密图片
  8. 植物表型组学研究平台建设及技术应用
  9. VMware和Virtual Box虚拟机的区别
  10. MySQL密码长不为6_mysql密码规则配置-配置为简单密码123456