2008-11-12 72 views
1

我想在內存中存儲數據庫的大型結果集。每條記錄的長度都是可變的,訪問時間必須與陣列一樣快。什麼是實施這個最好的方法?我正在考慮將偏移量保存在單獨的表格中並連續存儲所有記錄?奇怪嗎? (編程語言:德爾福)實現變長數組的最佳方式是什麼?

+0

它有助於瞭解您正在考慮使用哪種編程語言,並帶有類似的問題。 – unwind 2008-11-12 08:01:02

回答

3

不知道我完全關注你,但看看TList。

在德爾福7至少,它是作爲一種指針實施。如果您知道有多少結果回來,您可以使用容量屬性提前預先分配列表。

如果空間不足,該列表將自動增長。它的增長量取決於列表的大小。

看看類單元的來源,看看它在做什麼。

編輯:同樣在D2009中,genist支持被添加到了TList中,使得它更好用。

1

最好的方法可能是包含指向記錄的指針數組。在這種情況下,您不必處理偏移量,並且查找將保持不變。

+0

對於提問者的建議,查找仍然是不變的。 – 2008-11-12 17:00:50

0

我會使用TList,並將指針存儲到您的記錄。

type 
    pMyRecord : ^TMyRecord; 
... 
... 
... 
var 
    p : pMyRecord; 
... 
... 
New(p); 
with p^ do 
begin 
    ... 
    ... 
end; 
... 
MyList.Add(P); 
0

爲什麼不使用數據庫的MEMORY版本?大多數人都有辦法在內存中保留一個完整的表,通常涉及SQL關鍵字MEMORY。您可以將表從磁盤複製到內存表,然後以內存速度使用所有正常的數據庫操作。我知道這在DBISAM中運行良好。

0

正在關注mj2008,您可以使用TCLientDataset而不是記錄數組。 結果集有多大?

相關問題