sql – 如何优化具有相同子查询两次的查询?
发布时间:2020-12-12 06:42:12 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试改进一些查询性能,查询的结构如下: select 'Total_amount',(select SUM(Total) from dbo.Invoices i where i.BU = bun.BU),case when (select SUM(Total) from dbo.Invoices i where i.BU = bun.BU) 100000 then 'Good' else 'Not good' end from
我正在尝试改进一些查询性能,查询的结构如下:
select 'Total_amount',(select SUM(Total) from dbo.Invoices i where i.BU = bun.BU),case when (select SUM(Total) from dbo.Invoices i where i.BU = bun.BU) > 100000 then 'Good' else 'Not good' end from dbo.BusinessUnits bun 我知道这个例子可以使用连接来解决,但在我的真实查询中我需要子查询. 有没有办法通过计算一次子查询来提高性能? 解决方法您可以尝试使用OUTER APPLY,如下所示: –select 'Total_amount',SumTotal,case when SumTotal > 100000 then 'Good' else 'Not good' end from dbo.BusinessUnits bun OUTER APPLY (select SUM(Total) from dbo.Invoices i where i.BU = bun.BU) CA(SumTotal) 特别感谢MARTIN SMITH指出!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |