gpt4 book ai didi

delphi - TADOQuery 是否有包含客户端索引的扩展

转载 作者:行者123 更新时间:2023-12-02 04:53:03 25 4
gpt4 key购买 nike

快速提问(希望如此)

我有一个大型数据集(>100,000 条记录),我想将其用作查找以确定多个键是否存在。这样做的目的是在尝试将 FK 违规提交到数据库之前找到它们,以避免由此产生的 EDatabaseError 搞乱我的事务。

我一直在使用 TClientDataSet/TDatasetProvider 和 FindKey 方法,因为这允许设置客户端索引并且速度更快(扫描每个键需要 2 秒,而不是 ADO 需要 10 秒)。然而,迁移到大型数据集时,CDS 的数量开始花费比本地索引节省的时间更多的时间。

我发现我有几个替代方案:

  • 使用 TADOQuery.locate 方法的客户端游标
  • 每次检查的 ADO SELECT 语句(无客户端缓存)
  • ADO SEEK方法
  • 扩展 TADOQuery 以模仿 FindKey

Locate 方法似乎最简单,并且不会使用 SELECT/SEEK 方法向服务器发送垃圾邮件。我喜欢扩展 TADOQuery 的想法,但想知道是否有人知道任何现成的解决方案,而不必创建自己的解决方案?

最佳答案

我会在数据库服务器中创建一个临时表。将所有 100,000 条记录插入到此临时表中。一次批量插入 3000 条记录,以尽量减少与服务器的往返次数。然后在此临时表上运行 select 语句来检查外键违规等。如果一切正常,则从临时表到主表执行插入 SQL。

关于delphi - TADOQuery 是否有包含客户端索引的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16960588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com