不要在子查询中进行数学计算。暴露基础数据,由上层查询完成计算 表B 约3700万行。 表A约700万行 执行结果 方案1:2分10秒(+/- 5秒) 方案2:2分30秒(+/- 5秒)
select amount / days as result from B left join ( select id ,SUM(amount) as amount ,COUNT(DISTINCT date) as days from A group by id ) as AA on AA.id = B.id select result from B left join ( select id ,SUM(amount) / COUNT(DISTINCT date) as result from A group by id ) as AA on AA,id = B.id |
|
来自: Wiley Library > 《SQL Server》