gpt4 book ai didi

SQL Server 聚合性能

转载 作者:行者123 更新时间:2023-12-04 10:22:52 25 4
gpt4 key购买 nike

我想知道如果您在查询中喜欢聚合,如果再次使用它们,SQL Server 是否知道“缓存”。

例如,

Select Sum(Field),
Sum(Field) / 12
From Table

SQL Server 会知道它已经在第一个字段上计算了 Sum 函数,然后将它除以 12 作为第二个字段吗?或者它会再次运行 Sum 函数然后将其除以 12?

谢谢

最佳答案

它计算一次

Select
Sum(Price),
Sum(Price) / 12
From
MyTable

该计划给出:
|--Compute Scalar(DEFINE:([Expr1004]=[Expr1003]/(12.)))
|--Compute Scalar(DEFINE:([Expr1003]=CASE WHEN [Expr1010]=(0) THEN NULL ELSE [Expr1011] END))
|--Stream Aggregate(DEFINE:([Expr1010]=Count(*), [Expr1011]=SUM([myDB].[dbo].[MyTable].[Price])))
|--Index Scan(OBJECT:([myDB].[dbo].[MyTable].[IX_SomeThing]))

该表有 135 万行
  • Expr1011 = 总和
  • Expr1003 = some internal thing to do with "no rows" etc但基本上是 Expr1011
  • Expr1004 = Expr1011/12
  • 关于SQL Server 聚合性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507883/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com