我想尽快将表的全部内容读入内存。我正在使用 Nexus 数据库,但我可能会使用一些适用于 Delphi 中所有数据库类型的技术。
我正在查看的表有 20 列的 60,000 条记录。所以不是一个庞大的数据集。
从我的分析中,到目前为止,我发现了以下内容:
直接使用 TnxTable 访问表并不比使用 SQL 查询和“SELECT * FROM TableName”快或慢
在不实际读取或复制任何数据的情况下循环遍历行的简单操作会占用大部分时间。
我得到的表现是
- 循环遍历所有记录需要 3.5 秒
- 遍历所有记录,读取值并存储它们,需要 3.7 秒(即仅多 0.2 秒)
我的代码示例
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 上的另一台服务器。