• 締切済み

クエリの処理が遅くなりました・・・

以前のSQLがどうなっていたのかわかりませんが、私がテーブルを追加した時に処理が遅くなったので、元に戻しました。 それなのに、処理速度が20秒ぐらいだったのが3分ぐらいかかる様になってしまいました。 どうしてかわかりません・・・。 ファイル集計クエリ。 SELECT ファイル明細.コード, Sum(ファイル明細.小計) AS 小計の合計 FROM ファイル明細 GROUP BY ファイル明細.コード ORDER BY ファイル明細.コード; ファイル明細クエリ。 SELECT 依頼書.コード, 依頼書.対象コード, 依頼書.差額, 実績.数量, Sum([依頼書.差額]*[実績.数量]) AS 小計 FROM 依頼書, 実績 WHERE (((依頼書.お客コード)=[実績].[住所コード]) AND ((実績.年月)=[対象年月を指定してください]) AND ((依頼書.対象コード)=[実績].[品番])) OR (((実績.年月)=[対象年月を指定してください]) AND ((依頼書.対象コード)=[実績].[品番]) AND ((IsNull([依頼書].[お客コード]))<>False)) GROUP BY 依頼書.コード, 依頼書.対象コード, 依頼書.差額, 実績.数量; ちなみに実績ファイルはネットワークよりリンクしてます。

みんなの回答

noname#140971
noname#140971
回答No.1

依頼書: ID___コード__対象コード_お客コード_差額 1____I001____T001________K001________\100 2____I002____T002________K002________\200 3____I001____T002________K002________\300 実績: ID___品番___住所コード__年月______数量 1____T001___K001_________200701____10 2____T002___K002_________200701____20 クエリ2: コード__対象コード__お客コード__差額__数量 I001____T001_________K001________\100____10 I001____T002_________K002________\300____20 I002____T002_________K002________\200____20 クエリ3: コード__実績差額の合計 I001____7000 I002____4000 つまり、I001 は従来の実績と\100の差がある場合は\1000の差額を意味する。 つまり、I001 は従来の実績と\300の差がある場合は\6000の差額を意味する。 そういうことで I001の差額合計は\7000。 しかし、仮に、上記のような関係であれば、実績は2度も集計対象になってしまう。 私には、何や訳の判らない[実績差額の合計]計算です。 実績: ID___コード__品番___住所コード__年月______数量 1____I001____T001___K001_________200701____10 2____I001____T002___K002_________200701____20 こういう実績テーブルならば、少しは、理解も出来ます。 推測1、従来は2重集計を回避していた。 推測2、従来は[実績差額の合計]は一回で済ませていた。 クエリ3: コード__実績差額の合計 I001____7000 つまり、[ファイル集計クエリ]は、こういう結果だった。 ※全ては、憶測ですが・・・。

関連するQ&A