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

原创 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在以后的版本不做出改变。

相关文章推荐

【错误记录】关于C语言指针和数组

最近在写一道算法题目时犯了一个关于C语言的指针的错误。就是传递一个长度不定的二维数组参数,然后通过指针的方式读写该数组。主要错误代码如下: #define _CRT_SECURE_NO_DEPRECA...

C++指针和数组:认识指针和数组

注:本文章是基于C++98的标准来写的,有关C++11的标准的知识后续会陆续更新 1、C/C++在数组和指针方面的内容相差无几,故有关C方面的指针也可以加以参照 2、数组的定义和初始化        ...

从数组传参看函数的调用和数组的存储情况

从数组传参看函数的调用和数组的存储情况

学习OpenCV2——Mat之矩阵和数组的运算

本文介绍了OpenCV中关于矩阵和数组的一些常见操作
  • GDFSG
  • GDFSG
  • 2016年03月19日 16:07
  • 12166

黑马程序员——基础学习(三)函数和数组

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 函数(方法) 函数的格式: 修饰符 返回值类型 函数名(参数类型 形参名,参数类型 形参名...

javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(4)-- 变量和数组

数组数组是一个容器对象,它保存单个类型的固定数量的值。创建数组时,建立数组的长度。创建后,其长度是固定的。你已经看到了一个阵列的例子,在“Hello World!”的主要方法中。应用。本节将更详细地讨...

C语言深度解剖——读书笔记-10、指针和数组

4.5    多维数组和多级指针 4.5.1    二维数组(重点) 二维数组的布局:只需记住二维数组的存储也是线性的,编译器总是把二维数组看成一个一维数组,而一维数组的每一个元素又是一个数组。...
  • Cowena
  • Cowena
  • 2015年08月03日 15:26
  • 306

Javascript基础知识盲点总结——数据类型和数组

一、javascript总的基本类型 1.javascript中的基本类型共有五种:数字、字符串、布尔值、undefined、null 其中null和undefined最大的区别在于,被赋予nul...
  • fareise
  • fareise
  • 2016年05月11日 21:03
  • 6341

黑马程序员 笔记(四)——函数和数组

------- android培训、java培训、期待与您交流! ---------- 函数 一、函数的概述        1、  函数的定义:                    函数...

R语言入门——矩阵和数组的操作

矩阵操作: 矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通 过函数matrix()创建矩阵。一般使用格式为: myymatrix ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:集合——记录的数组和数组的记录
举报原因:
原因补充:

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