次のクエリは、約70000レコードを取得するのに時間がかかります。私は実行時間が検索されたレコードの数に比例することに気づいた。実行時間が検索されたレコードの数に比例しないように、このクエリを最適化する必要があります。何か案が?SUMとCOUNT関数を持つSQLクエリを最適化する
;WITH TT AS (
SELECT TaskParts.[TaskPartID],
PartCost,
LabourCost,
VendorPaidPartAmount,
VendorPaidLabourAmount,
ROW_NUMBER() OVER (ORDER BY [Employees].[EmpCode] asc) AS RowNum
FROM [TaskParts],[Tasks],[WorkOrders], [Employees], [Status],[Models]
,[SubAccounts]WHERE 1=1 AND (TaskParts.TaskLineID = Tasks.TaskLineID)
AND (Tasks.WorkOrderID = [WorkOrders].WorkOrderID)
AND (Tasks.EmpID = [Employees].EmpID)
AND (TaskParts.StatusID = [Status].StatusID)
And (Models.ModelID = Tasks.FailedModelID)
And (SubAccounts.SubAccountID = Tasks.SubAccountID)AND (SubAccounts.GLAccountID = 5))
SELECT --*
COUNT(0)--,
SUM(ISNULL(PartCost,0)),
SUM(ISNULL(LabourCost,0)),
SUM(ISNULL(VendorPaidPartAmount,0)),
SUM(ISNULL(VendorPaidLabourAmount,0))
FROM TT
「TT」からの出力のみを選択しています。 'TD0'、' TD1'、 'TP1'は冗長であるので、それらを削除してください。 –
これらのテーブルはこの問題の原因ではありません。開始からそれらを省略したはずであることがわかっていれば、それはCOUNTとSUM – mohammedn
のクエリです。多くの人々は単に移動します。あなたは長い質問を投稿することによって自分自身に不利益を与えています。 –