集合 記錄的陣列和陣列的記錄

2021-05-24 03:20:38 字數 820 閱讀 6275

集合中的每乙個條目是%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在以後的版本不做出改變。

集合和陣列

資料多了用物件存,物件多了用集合存 1,陣列是固定長度的,集合是可變長度的 2,陣列建立時就已經確定其儲存的型別了,而集合可以存object 不同型別的物件 collection 下面常用的有list和set list常用的有arraylist linkedlist vector set常用的有ha...

集合和陣列的區別!

以下為jdk1.6中arraylist中的建構函式原始碼。public arraylist int initialcapacity constructs an empty list with an initial capacity of ten.public arraylist 可以看出在建立arr...

集合和陣列的比較

陣列容量固定且無法動態改變,集合是容量動態改變 陣列存放的資料 是基本資料型別和飲用水資料型別,集合只能放引用資料型別 陣列無法判斷其中存有多少元素,length只能告訴陣列的容量,集合可以判讀其中存有多少元素,而對總的容量是不關係的 集合有多中資料結構有順序表 鍊錶 雜湊表 樹等 多種特徵可以不同...