我想盡可能快地將表的全部內容讀入內存。我正在使用Nexus數據庫,但可能會使用一些適用於Delphi中的所有數據庫類型的技術。快速讀取Nexus數據庫表
我在看的表格有20,000列的60,000條記錄。所以不是一個龐大的數據集。
從我的分析,我發現了以下至今:
訪問直接使用TnxTable是沒有更快的表或比使用SQL查詢和更慢的「SELECT * FROM表名」
大部分時間都是循環遍歷行,而不實際讀取或複製任何數據的簡單行爲。
我得到的性能
- 通過所有記錄循環需要3.5秒
- 通過所有的記錄循環,讀取值並將其存儲,需要3.7秒(即只0.2秒更多)
A的我的代碼示例
var query:TnxQuery;
begin
query.SQL.Text:='SELECT * FROM TableName';
query.Active:=True;
while not query.Eof do
query.Next;
60,000行表格需要3.5秒。
這種表現聽起來是否合理?我能採取哪些其他方法來讓我更快地讀取數據?
我目前正在從同一臺計算機上的服務器讀取數據,但最終可能來自LAN上的另一臺服務器。
單是3.5秒還是循環中有其他指令?因爲如果你正在閱讀數據,你可能會用FieldByName來做這件事,因爲它的速度不是很快而聞名 – zz1433 2011-04-27 00:18:13
只需要3.5s – awmross 2011-04-27 01:15:11