【发布时间】:2012-02-14 17:47:38
【问题描述】:
我有一个带有 3 个表单的 Delphi 应用程序,我正在使用 Access 2003 和 Microsoft.Jet.OLEDB.4.0,我在主表单中有一个 ADOconnection 并在所有表单中使用它。
我使用 2 个 .mdb 文件,其中 my.mdb 具有指向 org.mdb 表的链接。
一切正常,但非常缓慢。因此,经过长时间的搜索,我来到了这里。
我不知道为什么,但是在我运行这个查询之后,所有其他查询的速度都显着提高(从 1 秒以下的 10 秒开始)。 (即使是不排除链接表的查询)。
表 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 的计算机上运行我的应用程序,结果是一样的。
好的,现在我只是在 onFormActivate 上运行这个查询,但这不是一个永久的解决方案。
【问题讨论】:
-
SQL 的这种小小的平静如何影响所有其他查询?我不想每次启动程序时都运行此查询。没有它,其他查询应该很快。所以我想知道访问是否有一些“功能/兑现......”我不知道。它会产生隐藏的关系吗?我将该过程移动到一个新表单(创建了一个新连接)并尝试运行不同的查询,结果是相同的。在我运行上面的查询之前,一切都运行得很慢。我不知道我还能检查什么。
标签: delphi delphi-7 ado ms-access-2003