首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用相同的源优化多个子查询

使用相同的源优化多个子查询
EN

Stack Overflow用户
提问于 2022-06-30 08:23:37
回答 1查看 46关注 0票数 0

有人知道如何优化这样的查询吗?如何将其封装到一个查询中?

代码语言:javascript
运行
复制
,(SELECT top 1 WFD_AttDecimal2 as Nocleg
            FROM   WFElements INNER JOIN
             WFElementDetails ON WFElements.WFD_ID = WFElementDetails.DET_WFDID
             Where 
             WFD_STPID = @KrokSlownikUdostepnionyKraj 
             and dbo.ClearWFElemID (WFD_AttChoose20) = KrajDoDiety6 -- id kraju
             and dbo.ClearWFElemID (WFD_AttChoose9) = @Spolka) as NoclegStawka7
,(SELECT top 1 WFD_AttDecimal3 as NoclegPrzelicznik
            FROM   WFElements INNER JOIN
             WFElementDetails ON WFElements.WFD_ID = WFElementDetails.DET_WFDID
             Where 
             WFD_STPID = @KrokSlownikUdostepnionyKraj 
             and dbo.ClearWFElemID (WFD_AttChoose20) = KrajDoDiety6 -- id kraju
             and dbo.ClearWFElemID (WFD_AttChoose9) = @Spolka) as NoclegPrzelicznik7
,PelneDoby6 * (select  MinDieta from @MinDieta where RodzajDelegacji = KrajZagr6) as MinIloscDiet7
from @Dieta4
EN

回答 1

Stack Overflow用户

发布于 2022-06-30 08:32:55

您可以使用OUTER APPLYCROSS APPLY并在其中选择所有必要的列,然后可以访问SELECT中的所有列。

代码语言:javascript
运行
复制
SELECT 
  wfd.Nocleg as NoclegStawka7
, wfd.NoclegPrzelicznik as NoclegPrzelicznik7
, d.PelneDoby6 * (select md.MinDieta from @MinDieta md where RodzajDelegacji = KrajZagr6) as MinIloscDiet7
from @Dieta4 d
OUTER APPLY (
    SELECT TOP (1)
      WFD_AttDecimal2 as Nocleg,
      WFD_AttDecimal3 as NoclegPrzelicznik
    FROM   WFElements INNER JOIN
      WFElementDetails ON WFElements.WFD_ID = WFElementDetails.DET_WFDID
    Where 
      WFD_STPID = @KrokSlownikUdostepnionyKraj 
      and dbo.ClearWFElemID (WFD_AttChoose20) = KrajDoDiety6 -- id kraju
      and dbo.ClearWFElemID (WFD_AttChoose9) = @Spolka
) wfd;

另请注意:

  • ,我建议您重新考虑标量函数ClearWFElemID的用法,因为它可能很慢。使用联接或表值函数代替.

没有

  • TOP (1)ORDER BY是一种代码味:每次都可能得到不同的结果。

  • 在使用子查询时总是指定表别名,否则可能会得到错误的结果。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72812515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档