gpt4 book ai didi

Delphi ADO 与 MS Access - 运行特定查询后查询时间减少

转载 作者:行者123 更新时间:2023-12-01 16:45:03 29 4
gpt4 key购买 nike

我有一个带有 3 个窗体的 Delphi 应用程序,我使用 Access 2003 和 Microsoft.Jet.OLEDB.4.0,我在主窗体中有一个 ADOconnection 并在所有窗体中使用它。

我使用 2 个 .mdb 文件,其中 my.mdb 具有指向 org.mdb 表的链接。

一切正常,但速度非常慢。因此,经过长时间的搜索,我得出了这一点。

我不知道为什么,但在运行此查询后,所有其他查询的速度都显着提高(从 10 秒缩短到 1 秒)。 (甚至不包括链接表的​​查询)。

表 tb_odsotnost 位于 my.mdb
表 Userinfo 已链接。

  with rQueries.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT DISTINCT tb_odsotnost.UserID, Userinfo.Name FROM tb_odsotnost');
SQL.Add('LEFT JOIN Userinfo ON Userinfo.UserID = tb_odsotnost.UserID');
SQL.Add('WHERE datum BETWEEN '+startDate+' AND'+endDate);
SQL.Add('ORDER BY Userinfo.Name ASC');
Open;
end;

我尝试在另一台装有 win7 和 MS Access 2007 的计算机上运行我的应用程序,结果是相同的。

好吧,现在我只是在 FormActivate 上运行此查询,但这不是永久解决方案。

最佳答案

当您对链接表运行查询时,Access(或 Jet 或 ADO)会获取数据库上的 ldb 文件锁。如果关闭查询,则下次查询链接表时必须重新获取该锁。解决这个问题的推荐方法是始终保持后台数据集打开,这样就不必每次都获取锁(强制锁保持有效)。

参见http://office.microsoft.com/en-us/access-help/improve-performance-of-an-access-database-HP005187453.aspx并查看“提高链接表的性能”部分。

如果这没有帮助,请查看 Access 中的表定义,看看是否为一对多关系中的表字段定义了子数据表。

关于Delphi ADO 与 MS Access - 运行特定查询后查询时间减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9281691/

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