ale*_*lex 44 sql-server indexing aggregate view
我一直在尝试一些索引视图并留下深刻的印象,但我几乎总是需要最大或最小,并且无法理解为什么它不适用于这些,任何人都可以解释为什么?
我知道他们不被允许,我只是无法理解为什么!允许计数等为什么不MIN/MAX,我正在寻找解释......
Rem*_*anu 80
不允许使用这些聚合,因为它们不能仅根据更改的值重新计算.
一些聚合,如COUNT_BIG()或SUM(),只需查看更改的数据即可重新计算.这些在索引视图中是允许的,因为如果基础值发生更改,则可以直接计算该更改的影响.
其他聚合,例如MIN()和MAX(),只能通过查看正在更改的数据来重新计算.如果删除当前为max或min的值,则必须在整个表中搜索并找到新的max或min .
同样的原则适用于其他聚合,例如AVG()标准变体聚合.SQL无法仅根据更改的值重新计算它们,但需要重新扫描整个表以获取新值.