私は重大な問題に遭遇しています。実行に膨大な時間を要する巨大な微妙なクエリがあります。実際にはアクセスをフリーズし、時々私は、クエリは次のようになり、それを殺さなければならない:アクセスの最適化を選択
SELECT
ITEM.*,
ERA.*,
ORDR.*,
ITEM.COnTY1,
(SELECT TOP 1 New FROM MAPPING WHERE Old = ITEM.COnTY1) AS NewConTy1,
ITEM.COnValue1,
(SELECT TOP 1 KBETR FROM GEN_KUMV WHERE KNUMV = ERA.DOCCOND AND KSCHL = (SELECT TOP 1 New FROM MAPPING WHERE Old = ITEM.COnTY1)) AS NewCOnValue1
--... etc: this continues until ConTy40
FROM
GEN_ITEMS AS ITEM,
GEN_ORDERS AS ORDR,
GEN_ERASALES AS ERA
WHERE
ORDR.ORDER_NUM = ITEM.ORDER_NUM AND -- link between ITEM and ORDR
ERA.concat = ITEM.concat -- link between ERA and ITEM
クエリが動作しますので、私は、テーブルのスキーマをご提供することはありません、方法があるのならば、私が知りたいことはありますNewConTy1とNewConValue1を別の手法で追加して効率を上げてください。 Con *フィールドが1から40になっているので、ConTy1の横にあるNewConTy1の隣にNewConValue1があり、40まではConValue2の隣にあります。 ConTy#とConTyValue位ITEMS(フィールドの各) NewConty#とNewConValue#はERA
私は本当に私の説明が私の問題を把握するのに十分であると思います、 (記録の各)で表示していますあなたからみんなをお待ちして
EDIT:
は私が持っているデータの現在のダンプが、後で
EDIT 2を取り外すことになるだろう正確ではありませんので、それはだ、SELECTSでTOP 1を無視します
私のクエリは
おかげ Miloud
問題は不正なデータ構造です。問題を修正し、問題(および必要な回避策)がなくなる。 –
@ David-W-Fentonおそらくあなたはコメントを読む機会を得られなかったでしょうか? – Fionnuala
コメントはありますか?私は、SQLで明らかな非常に悪い構造上の問題に対処するものは何も見ません。 –