3つのフォームを持つDelphiアプリケーションがあり、Access 2003とMicrosoft.Jet.OLEDB.4.0を使用しています。それはすべての形で。MS Accessを使用したDelphi ADO - 特定のクエリを実行するとクエリ時間が短縮される
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を搭載した別のコンピュータでアプリケーションを実行しようとしましたが、結果は同じでした。
今のところ私はonFormActivateでこのクエリを実行しますが、これは永続的な解決策ではありません。
あなたの質問は何ですか? – RRUZ
SQLのこの小さな平和は他のすべてのquieriesにどのように影響しますか?私はプログラムを起動するたびにこのクエリを実行したくありません。それ以外のクエリは速くなければなりません。だから私はアクセスがいくつかの "機能性/現金化"を持っているのだろうかと思っていた。私は気づいていない。それは隠された関係を作りますか?私はプロシージャを新しいフォームに移動し(新しい接続を作成して)、別のクエリを実行しようとしましたが、結果は同じでした。上記のクエリを実行するまではすべてが遅くなります。他に何が確認できるか分かりません。 – user805528