それぞれ数百万行の 4 つのテーブルをクエリするトランザクション SQL ステートメントがあります。
TuningAdvisor に従ってインデックスと統計を使用して最適化されていますが、数分かかります。
クエリの構造は次のようになります。
SELECT E.従業員名 , SUM(M.Amount) AS TotalAmount , SUM(B.Amount) AS BudgetAmount , SUM(T.Hours) AS TotalHours , SUM(TB.Hours) AS BudgetHours , SUM(CASE WHEN T.Type = 'Waste' THEN T.Hours ELSE 0 END) AS WastedHours FROM 従業員 E LEFT JOIN MoneyTransactions M ON E.EmployeeID = M.EmployeeID LEFT JOIN BudgetTransactions B ON E.EmployeeID = B.EmployeeID LEFT JOIN TimeTransactions T ON E.EmployeeID = T.EmployeeID LEFT JOIN TimeBudgetTransactions TB ON E.EmployeeID = TB.EmployeeID GROUP BY E.EmployeeName
@real
各トランザクション テーブルには数百万行が含まれているため、@budget
、 、 などのテーブル変数を使用してトランザクション テーブルごとに 1 つのクエリに分割し、@hours
これらを final に結合することを検討しますSELECT
。しかし、テストでは、速度が向上しないようです。
それをスピードアップするためにどのように対処しますか?