0

我目前正在努力获得 SQL Server 70-461 的认证。我目前正在进行一些练习测试,并遇到了一个关于索引视图要求的问题。我知道如果使用 GROUP BY 子句,索引视图必须具有 SCHEMABINDING 和 COUNT_BIG(*) 并且索引必须是聚集的,然后这将实现数据。

CREATE VIEW VW_Test
AS
SELECT ColumnA, ColumnB FROM Table
WHERE ColumnC > 200

在示例问题中,要在 ColumnA 上创建索引。ColumnB 和 ColumnC 都是计算列。

问题是,ColumnB和ColumnC的要求是什么?

  • 确定性
  • 精确的
  • 标记为 PERSISTED

不幸的是,在我的培训材料中,我没有在这种情况下遇到这些术语,所以如果你能给我一些关于它们含义的指导,那么我将能够从那里弄清楚。

4

1 回答 1

1

确定性:指计算列引用的函数。当给定相同的输入时,确定性函数总是返回相同的值。例如,SUM 是确定性的,但 GETDATE 不是。

精确:不包含浮点表达式的确定性表达式。

标记为 PERSISTED:在构建计算列时,可以选择将其标记为“PERSISTED”,以便计算列物理存储到数据库中,而不是在引用时即时重新计算。

至于关于 B 列和 C 列要求的问题本身,似乎以下情况适用:

“只有精确的确定性表达式才能参与键列以及索引视图的 WHERE 或 GROUP BY 子句。” 创建索引视图

于 2015-11-17T13:36:57.673 回答