关闭

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

标签: 数据结构list测试oracletablesun
247人阅读 评论(0) 收藏 举报
分类:

 集合中的每一个条目是%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在以后的版本不做出改变。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:16621次
    • 积分:300
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:4篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论