2016-06-27 4 views
0

データベースとしてアクセスを使用するレガシーアプリケーションを最適化しようとしています。クエリのいくつかの問題は、実行時間後に何も返されないということです。私は1つずつ結合を追加することによって問題を把握しようとしています。今は、何も返されず、永遠に実行されているため、クエリの1つにぶつかってしまいました。 SubQueriesを使用してデータを取得するLeft Joinを追加した後、クエリがこのように動作しています。これらの列のテーブルにインデックスを追加
任意の提案を心から..いただければ幸いですアクセスクエリは永久に実行されます

答えて

1

凝集カラム(MaxOfColumn)への接合はおそらくうまくいかないでしょう。

私はお勧めします:[qry Aggregate Query]の結果を一時テーブルに挿入します。問題のあるクエリでそのテーブルを結合してください。

これに対してSELECT INTOクエリを使用したり、古いTEMPテーブルを事前に削除したり、INSERT INTOクエリを使用して事前にTEMPテーブルを空にできます。

編集
あなたはそれが原則で働いていたら、私の代わりにテーブル作成クエリの追加クエリ(INSERT INTO)を使用することをお勧め。

したがって、一時テーブルはそのまま残り、パフォーマンスをさらに向上させるために、JOINに使用するフィールドにインデックスを追加できます。

がメインクエリを開くには、その後、VBAで実行します。

' Empty temp table 
CurrentDb.Execute "DELETE * FROM Temptable" 
' Run Append query 
CurrentDb.Execute "NameOfYourAppendQuery" 
' Open main query 
DoCmd.OpenQuery "MainQuery" 
+0

@ララ:読んでみてください。試してみてください。それほど難しいことではありません。クエリの種類:http://www.fmsinc.com/tpapers/queries/#Action_Queries '[qry List ASDT tbl ASDT P1T_AGENT_STAFF Active MAX END DATE]のコピーを作成し、** Make Table **クエリに変更します。それを実行します。代わりに、メインクエリで結果のテーブルを使用します。 – Andre

+0

リンクのおかげでAndre.Iは作成し、クエリでMake Table.Nowを実行します。LEFT JOIN [MakeTableName] ON [tbl ADW] .H10_STAFF_PARTY_ID = [MakeTableName] .STF_STAFF_PARTY_ID)のような結合をしますか?それは正しい方法ですか? – Lara

+0

@Lara:はい、現在[qry List ASDT tbl ASDT P1T_AGENT_STAFF Active MAX END DATE] 'があれば、それを' [MakeTableName] 'に置き換えてください。 – Andre

1

試してみてください。

[tbl ASDT P1T_AGENT_STAFF] - (STF_END_EFF_DT) 
[qry List ASDT tbl ASDT P1T_AGENT_STAFF Active MAX END DATE] - (maxOfSTF_END_EFF_DT) 

あなたもこの列を使用していないようにそれが見えますが、あなたはすでにmaxOfSTF_END_EFF_DTにそれが利用可能な、なぜこのテーブルに参加するのですか?

+0

を私はSTF_END_EFF_DT' Column.'STF_END_EFF_DT'はすでにインデックスと 'QRY一覧ASDT TBL ASDT P1T_AGENT_STAFFアクティブMAXのENDである'得るために参加していますDATE'はSubqueryです。私はここで欠けているものは何ですか? – Lara

+0

しかし、 'STF_END_EFF_DT' =' maxOfSTF_END_EFF_DT'ではありませんか?あなたはすでにこの情報を持っています。 – sagi

関連する問題