`
fw2003
  • 浏览: 80184 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

提高性能--使用输出集合

SQL 
阅读更多
 无论是BULK COLLECT还是FORALL,都是通过批量绑定给变量赋值。也就是说,它们是以一个完整的集合(如,<wbr></wbr>varray数组, 嵌套表 ,PL/SQL索引表<wbr></wbr>)为单位(一批一批的)向前或者向后绑定变量。在使用传统的DML语句的时候,每个SQL<wbr></wbr>语句的执行需要在PL/SQL<wbr></wbr>和SQL<wbr></wbr>引擎之前切换上下文,使用批量绑定变量后,就只需要一次上下文切换。<wbr></wbr>
  在演示BULK COLLECT之前,首先介绍相关知识:PL/SQL表。<wbr></wbr>
  PL/SQL表是在PL/SQL很早的版本就已经存在了的一种特殊的表。之所以说它特殊,是因为它更象一个一维数组。它是一张N行1列的表,它的行号类似一维数组的下标,但和一维数组比起来,首先PL/SQL表的索引也即是行号可以任意指定一个为整数的值,甚至为负数也可以。而将它看成是一个一维数组的话,它是稀疏的,没有固定长度的,可以动态扩展的。它只能在PL/SQL里使用。<wbr></wbr>
  声明一个PL/SQL表的语法:<wbr></wbr>
   1. 声明PL/SQL索引表类型 type type_name is table of element_type <wbr></wbr>[NOT NULL] index by key_type;<wbr></wbr>
   2. 声明索引表变量             identifier type_name;<wbr></wbr>

例如:声明一个PL/SQL索引表用于保存fw用户的math表里的n1列的数据<wbr></wbr>
type n1_table_type is table of fw.math.n1%type index by pls_Integer;<wbr></wbr>
n1_table n1_table_type;<wbr></wbr>
接下来,我们可以使用BULK COLLECT进行赋值:<wbr></wbr>
  select n1 BULK COLLECT into n1_table from fw.math;<wbr></wbr>
   for i in n1_table.first..n1_table.last loop<wbr></wbr>
      dbms_output.put_line('n1的值是:'||n1_table(i));<wbr></wbr>
   end loop;<wbr></wbr>

n1_table.first函数返回这张PL/SQL表的第1个索引值,n1_table.last函数返回最后一个索引值。<wbr></wbr>

同样的,在使用游标的fetch into时,我们也可以用BULK COLLECT:<wbr></wbr>
declare
  type n1_type is table of fw.math.n1%type index by pls_integer;
  n1_var n1_type;
  type n2_type is table of fw.math.n2%type index by pls_integer;
  n2_var n2_type;
  cursor math_cur is select n1,n2 from fw.math;
begin
  open math_cur;
  fetch math_cur bulk collect into n1_var,n2_var;
  for i in n1_var.first..n1_var.last loop
     dbms_output.put_line('n1的值是:'||n1_var(i)||'  n2的值是:'||n2_var(i));
  end loop;
  close math_cur;
end;
   上面的例子仅仅是输出几十行,但是如果这里需要输出的记录是上万行甚至更多的时候,那么BULK COLLECT<wbr></wbr>的就会发挥出强悍的优势。<wbr></wbr>
   因此, 在面对大数据量的操作时,例如上万行,我们应该使用BULK COLLECT还是FORALL来提高我们的PL/SQL块执行的性能。
分享到:
评论

相关推荐

    顺序表表示集合,实现集合的交、并、差运算

    根据给定的文件信息,我们可以总结出以下关于“顺序表表示集合,实现集合的交、并、差运算”的详细...通过以上分析可以看出,本程序通过顺序表实现了集合的基本运算,但仍有改进的空间,如增强健壮性和提高性能等方面。

    变量标识-输入-输出

    - **格式化输出:**使用特定的格式化字符串来控制输出的样式,例如`print('姓名:%s 年龄:%d 性别:%s' % (name, age, sex))`。 #### 输入 输入是指从用户那里获取数据的过程。在Python 3中,使用`input()`函数来...

    java基础 集合-26-Guava开源组件使用(4)

    这在处理昂贵的计算或数据库查询时,能显著提高性能。 4. **Optional类**:Guava的Optional类用于表示可能存在也可能不存在的值,避免了null值带来的问题。它鼓励开发者更明确地表达代码逻辑,降低了空指针异常的...

    cpp-gperftools一个测量和提高性能实用程序的集合

    通过使用这个工具,开发者能够有效地发现和解决性能问题,提高程序的运行效率。无论是查找内存泄漏、优化内存分配还是分析 CPU 使用情况,`gperftools` 都能提供必要的支持,助力开发者打造出更加高效、稳定的软件...

    高清文字版 - Objc 中国 - 集合类型优化

    通过仔细分析集合类型的使用情况,可以发现并消除不必要的数据复制,从而进一步提高性能。 #### 8. 总结 通过上述讨论可以看出,Swift中的集合类型优化是一个涉及多种技术和策略的复杂过程。选择合适的集合类型和...

    数组和集合

    在编程领域,尤其是Java语言中,数组和集合是处理数据的两种基本方式。数组(Array)是同类型数据的有序集合,而集合(Collection...在实际开发过程中,合理地选择和使用数组和集合,能有效提高程序的性能和可维护性。

    集合运算(数据结构)函数

    根据给定的文件信息,我们可以总结出以下关于“集合运算(数据结构)函数”的相关知识点: ### 一、概述 ...在实际应用中,为了提高性能,通常会使用更高效的数据结构(如哈希表或平衡树)来存储集合元素。

    基于3GPP TS 36.521-1规范 使用CMW500测量LTE终端射频性能应用文档

    - **集合功率控制**:TS36.521-1,6.3.5.3介绍了如何在多个信号同时传输的情况下管理总功率输出,这对于避免干扰和提高系统效率非常关键。 - **频率误差**:TS36.521,6.5.1定义了频率误差的测量方法,这是确保信号...

    Java 集合框架+集合实例

    - **集合输出**:将集合内容打印到控制台。 - **List循环移动元素**:在List中移动元素的位置。 - **遍历HashTable的键值**:使用keySet()方法获取HashTable的所有键,然后遍历键和对应的值。 Java集合框架为...

    一文教会你:如何使用 HttpRunner v4.0 开展性能测试!

    此外,我们还将关注 API3 的并发性能(集合点特性)。这些特性都是性能测试中至关重要的部分,可以帮助我们了解系统在高负载下的表现。 在开始性能测试之前,我们需要编写测试用例。以下是一个简单的示例: ```...

    java编程规范-性能篇

    Java编程规范在性能方面的重要性不言而喻,良好...遵循这些Java编程规范,可以有效提高代码的性能,减少资源浪费,同时增强代码的可读性和可维护性。在实际开发中,应时刻关注代码的性能优化,以提供更高效的软件服务。

    hibernate-性能优化

    【描述】:在使用 Hibernate 进行数据库操作时,性能问题时常出现,但通过适当的调整和优化,我们可以显著提高 Hibernate 的执行效率,甚至达到接近或超过直接使用 JDBC 的效果。本文将探讨几个关键的优化策略。 ...

    HT-IDE3000使用手册(C语言版本)

    - **在程序存储器区块0中指定变量(提高性能)**:为了提高性能,在程序存储器区块0中指定变量。 - **指针范围**:指针可以访问的内存范围。 - **访问LCD数据存储空间**:访问液晶显示模块的数据存储空间。 - **单片机...

    MySQL性能优化概述

    - **硬件与软件环境**:选择合适的服务器硬件和操作系统版本对于提高MySQL性能至关重要。 - **数据表结构**:合理设计表结构可以显著提升查询效率。 - **索引**:合理创建和维护索引是提高查询速度的有效手段。 - **...

    py代码-输入包含若干集合的列表,输出这些集合的并集。 提示:使用reduce()函数和operator模块中的运算实现多个集合的并集。

    此外,由于集合操作通常有很好的时间复杂性,因此这种方法在性能上也是相当高效的。 在`main.py`文件中,可能就是实现了一个这样的功能,而`README.txt`可能是对这个功能的简短说明或使用指南。为了更好地理解实际...

    PL-SQL集合与记录

    ### PL-SQL集合与记录详解 #### 一、概述 在PL/SQL中,集合是一种非常有用的数据结构,用于处理相同类型数据的有序...深入理解这些概念将有助于开发者更有效地编写PL/SQL代码,提高数据库应用程序的性能和可维护性。

    Java笔试题集合-常见java笔试题目

    - **缓冲流**:BufferedReader, BufferedWriter等提高I/O性能。 10. **网络编程** - **Socket编程**:理解TCP和UDP协议,如何创建服务器端和客户端,进行数据传输。 - **URL和URLConnection**:用于访问网络资源...

    YZC-133压力传感器配套资料.7z

    本资料集合包含了该传感器的使用手册和例程,旨在帮助用户全面了解和有效运用YZC-133压力传感器。 一、YZC-133压力传感器概述 YZC-133传感器采用先进的微电子机械加工工艺制造,具有体积小、重量轻、精度高、稳定性...

Global site tag (gtag.js) - Google Analytics