程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 用SQL Server 2005索引視圖提高性能二

用SQL Server 2005索引視圖提高性能二

編輯:關於SqlServer

視圖限制

如要在 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 選項的情況下創建索引。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved