【发布时间】:2010-10-18 00:23:28
【问题描述】:
我们有一个事务处理 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,然后将它们加入最终的 @987654324 @。但是在测试中它似乎没有加速。
您将如何处理以加快速度?
【问题讨论】:
标签: sql sql-server join large-data-volumes