我想尽可能快地将表的全部内容读入内存。我正在使用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