delphi - Delphi中频繁存储、搜索和修改大数据集的最佳方法

标签 delphi dataset search storage

在 Delphi 中,创建和存储经常被搜索和修改的数据的最佳方法是什么?

基本上,我想编写一个函数来搜索现有数据库中的电话号码,并跟踪每个电话号码的使用次数、首次使用日期和最近使用日期。正在搜索的数据库基本上是下订单的日志,其中包含用于下订单的电话号码。它不是 SQL 数据库或任何可以轻松查询此类内容的数据库(它是旧的 btrieve 数据库),因此我需要创建一种获取此信息的方法(最终输出到文本文件)。

我正在考虑创建一个包含电话号码、两个日期和使用次数的记录,然后为每个电话号码添加一个记录到动态数组。然后,我将逐条搜索数组,查找数据库中的每条记录,以查看当前记录的电话号码是否已在数组中。然后根据需要更新或创建记录。

这似乎可行,但由于数据库中有数以万计的条目,这可能不是最好的方法,而且是一种相当缓慢且低效的处理方法。考虑到我可以对数据库执行的操作有限,是否有更好的方法?

有人建议不要使用数组,而是使用 MySQL 表来跟踪数字,然后查询每个数据库记录的每个数字。不过,这似乎开销更大!

非常感谢您的宝贵时间。

最佳答案

我会在完全断开连接的 TClientDataset(cds) 中注册聚合,并在您从循环中获取值时更新它们。如果 Btrieve 可以按电话号码排序,那就更好了。然后使用光盘上的数据生成报告。

(如果你这样做,我建议从 Midas SpeedFix 中获取 Andreas Hausladen' blog,以及你可以在那里找到的其他最好的东西)。

关于delphi - Delphi中频繁存储、搜索和修改大数据集的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/825486/

相关文章:

delphi - 如何增加 IDE 调试器可视化工具可以显示的字符串的大小?

R : object not found

javascript - 在鼠标悬停时从 jqgrid 获取数据

c - 在链表中搜索字符串并获取所有变量

performance - PHP MYSQL搜索引擎使用关键字

r - 在 R 中向后搜索向量/数据表

delphi - TIdTCPServer 停止时 SSL_accept 中的 Indy/Libssl32 访问冲突

delphi - 如何在 Canvas 上一起绘制 2 个渐变?

multithreading - 在Delphi中,TDataSet线程安全吗?

delphi - FPC 3.0 和 InterlockedCompareExchange