私はこのサイトを初めて利用しますが、私に反対しないでください。一度だけ使ったことがあります。
これが私のジレンマです。私は中程度のSQL知識を持っていますが、専門家ではありません。以下のクエリは、かなり前にコンサルタントによって作成されました。
大量のデータがあるため、ほとんどの朝、実行には1.5時間かかります。しかし、他の朝は、4〜6時間かかります。実行中のジョブを削除しようとしました。何がこの問題を引き起こしているのかを突き止めるために何をしようとするかについて、私は完全に混乱しています。
どんな助けでもいただければ幸いです。
私はすでにこのクエリを2つのクエリに分割しましたが、パフォーマンスを向上させるためのヒントをいただければ幸いです。
このクエリは、在庫トランザクションを再構築して、任意の時点での手持ち在庫の価値を見つけます。
SELECT
ITCO, ITIM, ITLOT, Time, ITWH, Qty, ITITCD,ITIREF,
SellPrice, SellCost,
case
when Transaction_Cost is null
then Qty * (SELECT ITIACT
FROM (Select Top 1 B.ITITDJ, B.ITIREF, B.ITIACT
From OMCXIT00 AS B
Where A.ITCO = B.ITCO
AND A.ITWH = B.ITWH
AND A.ITIM = B.ITIM
AND A.ITLOT = B.ITLOT
AND ((A.ITITDJ > B.ITITDJ)
OR (A.ITITDJ = B.ITITDJ AND A.ITIREF <= B.ITIREF))
ORDER BY B.ITITDJ DESC, B.ITIREF DESC) as C)
else Transaction_Cost
END AS Transaction_Cost,
case when ITITCD = 'S' then ' Shipped - Stock' else null end as TypeofSale,
case when ititcd = 'S' then ITIREF else null end as OrderNumber
FROM
dbo.InvTransTable2 AS A
これが実行計画です。 http://i.imgur.com/mP0Cu.png
これがDTAですが、推奨事項が空白であるため、読み方がわかりません。それは「作成」と言うべきではありませんか? http://i.imgur.com/4ycIP.png