【发布时间】:2018-04-06 17:37:48
【问题描述】:
我有一个数据库 *.mdb。任务是从该数据库的某个字段中获取所有值并将它们写入文件。 现在代码看起来像这样
while not ADOQuery1.Eof do begin
resultstringlist.add(ADOQuery1.FieldByName('_fieldname_').asString);
ADOQuery1.next;
end;
它有效,但我认为有一个更优化和更快的选择。由于数据库大小约为 40,000 条记录,此过程需要相当长的时间。我需要使用的数据库包含数十倍的记录和数十个表。 我认为这是一个非常愚蠢的问题,但我自己在几天内找不到解决方案。对我来说,数据库是一个未开发的领域。我希望不会太久。
【问题讨论】:
-
您的 SQL 查询是什么样的?您查询的字段是否有索引?
-
为什么首先要检索 40K(或更多)记录?您无法在列表框或组合框中有效地向用户显示它。听起来您应该重新考虑您的应用程序逻辑和 SQL 语句。此外,您要花费大量时间为字符串列表重新分配内存,因为它必须不断增长,不断增长,这也会消耗大量时间(并且可能会非常严重地碎片化内存)。
-
我可以创建一个包含一些我需要处理的字段的新数据库。它将有大约 20-50 个字段,但都是相同的 40,000 条记录。这不是客户端-服务器或客户端-客户端的通常交换。这是一个积累了几天实验数据的数据库,我需要使用它。构建图表、插值、评估不同字段之间的相关性等。每条记录中的第一个字段是沿 X 轴的一个点(日期时间格式)。其余字段是沿 Y 轴的点(实数或整数格式)。我不能只拿一百分,只和他们一起工作。