こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

以前の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 依頼書.コード, 依頼書.対象コード, 依頼書.差額, 実績.数量;

ちなみに実績ファイルはネットワークよりリンクしてます。

投稿日時 - 2008-01-21 14:45:43

QNo.3699899

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(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

つまり、[ファイル集計クエリ]は、こういう結果だった。

※全ては、憶測ですが・・・。

投稿日時 - 2008-01-21 16:52:16

あなたにオススメの質問