我们有一个事务 sql 语句,它查询 4 个表,每个表有数百万行。
尽管根据 TuningAdvisor 已使用索引和统计数据对其进行了优化,但仍需要几分钟时间。
查询的结构如下:
SELECT E.EmployeeName , 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 来自员工 E 左加入 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 左加入 TimeBudgetTransactions TB ON E.EmployeeID = TB.EmployeeID GROUP BY E.EmployeeName
由于每个事务表包含数百万行,我考虑将其拆分为每个事务表一个查询,使用表变量,如@real
,@budget
和@hours
,然后将它们连接到一个 final 中SELECT
。但在测试中它似乎没有加速。
您将如何处理以加快速度?