視圖限制
如要在 SQL Server 2005 中的視圖上創建一個索引,相應的視圖定義必須包含:
ANY、NOT ANY OPENROWSET、OPENQUERY、OPENDATASOURCE
不精確的(浮型、實型)值上的算術 OPENXML
COMPUTE、COMPUTE BY ORDER BY
CONVERT 生成一個不精確的結果 OUTER 聯接
COUNT(*) 引用帶有一個已禁用的聚集索引的基表
GROUP BY ALL 引用不同數據庫中的表或函數
派生的表(FROM 列表中的子查詢) 引用另一個視圖
DISTINCT ROWSET 函數
EXISTS、NOT EXISTS 自聯接
聚合結果(比如:SUM(x)+SUM(x))上的表達式 STDEV、STDEVP、VAR、VARP、AVG
全文謂詞 (CONTAINS、FREETEXT、CONTAINSTABLE、FREETEXTTABLE) 子查詢
不精確的常量(比如:2.34e5) 可為空的表達式上的 SUM
內嵌或表值函數 表提示(比如:NOLOCK)
MIN、MAX text、ntext、image、filestream 或 XML 列
不具有確定性的表達式 TOP
非 unicode 排序 UNION
SQL Server 2005 可檢測到的矛盾情況表示視圖將為空(比如,當 0=1 及 ...)
注意 索引視圖可能包含浮型和實型列;但是,如果這類列為非永久性的計算列,則不能包含在聚集索引鍵中。
GROUP BY 限制
如果存在 GROUP BY,VIEW 定義為:
一定包含 COUNT_BIG(*)。
一定不包含 HAVING、CUBE、ROLLUP 或 GROUPING()。
這些限制僅適用於索引視圖定義。即便不能滿足上述 GROUP BY 限制,查詢也可以在其執行計劃中使用索引視圖。
有關索引的要求
執行 CREATE INDEX 語句的用戶必須是視圖所有者。
如果視圖定義包含 GROUP BY 子句,唯一的聚集索引的鍵只能引用 GROUP BY 子句所指定的列。
一定不能在啟用 IGNORE_DUP_KEY 選項的情況下創建索引。