在delphi中处理来自TAdoQuery的大量数据

用户名

编程语言:Delphi 6

后端中的SQL Server。

问题:

以前,每次需要应用程序时,应用程序都会命中数据库;最终为了获得某些东西而命中数据库2000多次,从而导致应用程序运行缓慢。击中数据库的原因是很多表具有不同的结构和不同的列数。因此,我正在尝试减少通话次数。每个表一次可以有大约4000条记录。

拟议的解决方案:

让我们立即从数据库中获取所有数据,并在需要时使用它们,这样我们就不必继续访问数据库。

到目前为止,解决方案的结果如何:

此版本的Delphi没有字典。因此,我们已经有一个来自字符串列表的字典的实现(让我们假设实现是好的)。

解决方案1:

将此存储在我们创建的字典中:唯一字段作为键。并将其余数据添加为字符串列表中的字符串,如下所示:FiledName1:FileValue,FieldName2:FieldValue2,.....可能必须创建约2000个字符串列表才能将数据映射到键。我看了以下链接:如何在Delphi中实现一个庞大但简单的索引StringList?看来他们可以将其转移到其他数据库,而我却无法做到。这是一个理智的解决方案吗?

解决方案2:

使用List将其存储在字典中。该列表将包含Delphi记录。不能直接添加记录,因此我看了一下此链接:Delphi T记录列表

解决方案3:

或鉴于我正在使用TAdoQuery,所以我应该使用Seek或定位来查找我的记录。请建议最好的方法吗?

要求:

需要该数据的随机访问。当我们按需获取每个表的所有数据时,数据插入只会发生一次。

只需要读取数据,而不必修改它。

不断需要根据主键进行搜索。

除了更改应用程序之外,我们还已经在数据库上完成了很好的索引编制工作,以处理数据库方面的问题。这样做不仅可以使应用程序正常运行。

肯·怀特

这听起来像是TClientDataSet的完美用例它是一个内存中的数据集,可以轻松地进行索引,过滤和搜索,并包含您可以使用SQL语句从数据库中检索到的所有信息,并且在数千行合理大小的数据上具有相当不错的性能。(上面的链接是当前文档,因为我没有一个可用的Delphi 6文档。它们应该非常相似,尽管我不记得哪个特定版本增加了直接MidasLib在您的uses子句中添加功能的能力,消除Midas.dll与您的应用程序一起分发。)

凯里·詹森(Carey Jensen)几年前写了一系列有关它的文章,这些文章可能对您有用。第一个可以在每个数据库应用程序的ClientDataset中找到-系列中的其他链接到该数据库中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章