集合——记录的数组和数组的记录

原创 2011年01月17日 13:37:00

 集合中的每一个条目是%ROWTYPE或相似的记录变量。给定这样一个集合,数据可能表示成两种结构:

1、记录的数组(先创建一行,然后将其加入到列表中)

2、数组的记录(创建多个列表,然后把它们连成一个记录)

但应该使用哪种数据结构呢?回答此问题需要考虑两个方面:

1、填充结构时能有多高效?

2、从其中取出数据时效能有多高?

 

下面我们来做一个测试(OS:sun 5.10, Oracle: 10.2.0)。首先创建一个包pkg,它包含两个过程:rec_of_array_test和array_of_rec_test。它们两个的负载相同,但每个都以与各自同名的数据结构来执行。

 

在包中需要定义一些变量,以测试数据结构。srec_list是一个记录(srec)的数组,其中srec记录包含了3个标量变量,而array_rec是一条记录,其中每个字段都是一个数组(num_list)。

 

 

 

对每个数据结构,执行两次计时测试。做了2 000 000次赋值,即循环500 000次,每次将一个值赋给4个记录元素A、B、C和D。(行17——24)。

 

然后,为了测试获取数据的性能,将从结构中读取250 000个伪随机的条目。跟往常一样,dbms_utility.get_time来记录开始时间和结束时间(行25——34)。

 

然后对另一个数据结构进行相同的测试。测试结果如下:

 

 

所以,对于填充和取值,似乎都是使用记录的数组比使用数组的记录要更高效。不要问为什么,兴许Oracle开发团队的某个人能告诉你,但能否知道原因并不重要,重要的是我们设计了一个测试来证明这个结论。在10g 2.0版本中,两者之间的差异显而易见(测试结果得出),但不能保证Oracle在以后的版本不做出改变。

记录数组指针与指针数组的易混淆点

这两天看Linux设备模型的kobject结构,整个人都不好了,老是搞错一些东西~感觉还是有必要好好在复习一下基础知识。 1、指针数组与数组指针 这两个名字不同当然所代表的意思也就不同。我刚开...
  • xy010902100449
  • xy010902100449
  • 2015年06月04日 20:31
  • 988

【连续】子数组之和最大并得到子数组的下标边界

此博客的目的仅供个人学习和分享,其实也是为了自己复习知识方便,这也是本人第一次写博客,缺乏经验,见谅见谅!该文章主要是为了求【连续】子数组之和最大并得到子数组的下标边界,使用的算法采用的是分治的思想,...
  • w3003421126
  • w3003421126
  • 2015年09月09日 10:11
  • 534

oracle学习之路(二)------数组类型/记录类型的使用

Oracle记录类型介绍RECORD:用户自定义数据类型,由单行多列的标量构成的复合数据类型,它将一个或多个标量封装成一个对象进行操作记录不可以总体拿来比较也不可以整体判断为空,可以整体拿来赋值,组成...
  • qq_17284367
  • qq_17284367
  • 2015年06月11日 12:38
  • 1000

C语言--数组首地址问题小记

#include #include int main() { int a[5]={1,2,3,4,5}; //以十六进制打印数组的首地址 这里a与&a,&a[0]一样的结果 printf("...
  • u012110719
  • u012110719
  • 2015年03月29日 16:00
  • 713

数组和集合区别

一、数组声明了它容纳的元素的类型,而集合不声明。        二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合...
  • qq_27088383
  • qq_27088383
  • 2016年01月06日 14:39
  • 20328

【数据结构之排序4】冒泡排序

交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 本文介绍第一种交换排序方法:冒...
  • jackyvincefu
  • jackyvincefu
  • 2013年10月21日 16:31
  • 1365

结果集中获取记录的4种方法

先使用SQL创建表,并向表中插入数据 create table contactInfo(     uid mediumint(8)     unsigned NOT NULL AUTO_...
  • liuruiqun
  • liuruiqun
  • 2015年04月11日 00:29
  • 1355

MongoDB——Aggregates(c#实现支持数组字段)

c#实现 添加如下引用:本文引用版本为:Version=2.2.4.26 using MongoDB.Bson; using MongoDB.Driver; 构建聚合管道:要求能够 ...
  • Shiyaru1314
  • Shiyaru1314
  • 2016年10月14日 14:21
  • 1053

集合、数组 详解

数组: 数组的声明 : 一、 声明成绩数组 int[] scores = new int[5]; 动态初始化 (动态初始化) ...
  • renliang01
  • renliang01
  • 2016年08月08日 21:47
  • 880

java 集合体系结构以及集合和数组的区别

数组和集合的定义 一、数组 数组是java语言内置的数据类型,他是一个线性的序列,所有可以快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,他的容量是不变的,而且在生命周期也是不能改变...
  • xnf1991
  • xnf1991
  • 2016年11月02日 13:26
  • 2638
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:集合——记录的数组和数组的记录
举报原因:
原因补充:

(最多只允许输入30个字)