【整理】SqlServer在視圖上建立索引的條件

來源:互聯網
上載者:User

在視圖上建立索引需要三個條件:
一、視圖必須綁定到架構。
要做到這點,在 CREATE VIEW 語句中,必須加上 WITH SCHEMABINDING,如果是使用企業管理器,則在設計介面的空白處點擊右鍵,屬性,選中“綁定到架構”。
二、索引必須是唯一索引。
要做到這點,在 CREATE INDEX 中必須指定 UNIQUE。
三、索引必須是叢集索引。
要做到這點,在 CREATE INDEX 中必須指定 CLUSTERED。
例:
CREATE VIEW viewFoo WITH SCHEMABINDING
AS
SELECT id...

CREATE UNIQUE CLUSTERED INDEX index_viewFoo ON viewFoo(id)

 

***************************************************************

視圖的要求
在視圖上建立叢集索引之前,該視圖必須滿足下列要求:  

當執行   CREATE   VIEW   語句時,ANSI_NULLS   和   QUOTED_IDENTIFIER   選項必須設定為   ON。OBJECTPROPERTY   函數通過   ExecIsAnsiNullsOn   或   ExecIsQuotedIdentOn   屬性為視圖報告此資訊。  

為執行所有   CREATE   TABLE   語句以建立視圖引用的表,ANSI_NULLS   選項必須設定為   ON。  

視圖不能引用任何其它視圖,只能引用基表。  

視圖引用的所有基表必須與視圖位於同一個資料庫中,並且所有者也與視圖相同。  

必須使用   SCHEMABINDING   選項建立視圖。SCHEMABINDING   將視圖綁定到基礎基表的架構。  

必須已使用   SCHEMABINDING   選項建立了視圖中引用的使用者定義的函數。  

表和使用者定義的函數必須由   2   部分的名稱引用。不允許使用   1   部分、3   部分和   4   部分的名稱。  

視圖中的運算式所引用的所有函數必須是確定性。OBJECTPROPERTY   函數的   IsDeterministic   屬性報告使用者定義的函數是否是確定性。有關更多資訊,請參見確定性函數和非確定性函數。  

視圖中的   SELECT   語句不能包含下列   Transact-SQL   文法元素:  
挑選清單不能使用   *   或   table_name.*   文法指定列。必須顯式給出列名。  

不能在多個視圖列中指定用作簡單運算式的表的列名。如果對列的所有(或只有一個例外)引用是複雜運算式的一部分或是函數的一個參數,則可多次引用該列。例如,下列挑選清單是非法的:  
SELECT   ColumnA,   ColumnB,   ColumnA

執行   CREATE   INDEX   語句的使用者必須是視圖的所有者。  
當執行   CREATE   INDEX   語句時,下列   SET   選項必須設定為   ON:  
ANSI_NULLS  
ANSI_PADDING  
ANSI_WARNINGS  
ARITHABORT  
CONCAT_NULL_YIELDS_NULL  
QUOTED_IDENTIFIERS  
必須將選項   NUMERIC_ROUNDABORT   選項設定為   OFF。  
視圖不能包含   text、ntext   或   image   列,即使在   CREATE   INDEX   語句中沒有引用它們。  
如果視圖定義中的   SELECT   語句指定了一個   GROUP   BY   子句,則唯一叢集索引的鍵只能引用在   GROUP   BY   子句中指定的列。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.