共用方式為


建立非叢集索引

您可以使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 2012 中建立非叢集索引。 非叢集索引是與資料表中所儲存之資料不同的索引結構,可重新排序一個或多個選取的資料行。 非叢集索引經常可協助您以比搜尋基礎資料表更快的速度找到資料;查詢的結果有時會完全來自非叢集索引中的資料,或是非叢集索引可能會將 Database Engine 指向基礎資料表中的資料列。 一般而言,建立非叢集索引是為了改善叢集索引未涵蓋但經常使用之查詢的效能,或尋找沒有叢集索引之資料表中的資料列 (稱為堆積)。 您可以在資料表或索引檢視上建立多個非叢集索引。

本主題內容

  • 開始之前:

    一般實作

    安全性

  • 若要建立非叢集索引,使用:

    SQL Server Management Studio

    Transact-SQL

開始之前

一般實作

非叢集索引的實作方法如下:

  • UNIQUE 條件約束

    當您建立 UNIQUE 條件約束時,依預設會建立唯一的非叢集索引,以強制 UNIQUE 條件約束。 若資料表上還沒有叢集索引,您可以指定唯一叢集索引。 如需詳細資訊,請參閱<唯一條件約束與檢查條件約束>。

  • 獨立於條件限制之外的索引

    依預設,若是未指定叢集索引,則會建立非叢集索引。 每個資料表可建立的最大非叢集索引數目是 999 個。 這包含 PRIMARY KEY 或 UNIQUE 條件約束所建立的任何索引,但不包含 XML 索引。

  • 索引檢視上的非叢集索引

    在檢視上建立唯一的叢集索引後,就可以建立非叢集索引。 如需詳細資訊,請參閱<建立索引檢視表>。

安全性

權限

需要資料表或檢視的 ALTER 權限。 使用者必須是系統管理員 (sysadmin) 固定伺服器角色的成員,或是 db_ddladmindb_owner 固定資料庫角色的成員。

搭配回到頁首連結使用的箭頭圖示[Top]

使用 SQL Server Management Studio

若要使用資料表設計工具建立非叢集索引

  1. 在 [物件總管] 中,展開包含您要建立非叢集索引之資料表的資料庫。

  2. 展開 [資料表] 資料夾。

  3. 以滑鼠右鍵按一下要建立非叢集索引的資料表,然後選取 [設計]

  4. [資料表設計工具] 功能表中,按一下 [索引/索引鍵]

  5. 在 [索引/索引鍵] 對話方塊中,按一下 [加入]。

  6. [選取的主/唯一索引鍵或索引] 文字方塊中選取新索引。

  7. 在方格中,選取 [建立成 CLUSTERED],然後從屬性右邊的下拉式清單中選擇 []。

  8. 按一下 [關閉]

  9. 按一下 [檔案] 功能表上的 [儲存 table_name]

若要使用物件總管建立非叢集索引

  1. 在 [物件總管] 中,展開包含您要建立非叢集索引之資料表的資料庫。

  2. 展開 [資料表] 資料夾。

  3. 展開您要建立非叢集索引的資料表。

  4. 以滑鼠右鍵按一下 [索引] 資料夾,指向 [新增索引],然後選取 [非叢集索引]

  5. [新增索引] 對話方塊,於 [一般] 頁面上的 [索引名稱] 方塊中輸入新索引的名稱。

  6. 按一下 [索引鍵資料行] 底下的 [加入]

  7. [從 table_name 選取資料行] 對話方塊中,選取要加入至非叢集索引之資料表資料行的核取方塊。

  8. 按一下 [確定]

  9. [新增索引] 對話方塊中,按一下 [確定]

搭配回到頁首連結使用的箭頭圖示[Top]

使用 Transact-SQL

若要在資料表上建立非叢集索引

  1. [物件總管] 中,連接到 Database Engine 的執行個體。

  2. 在標準列上,按一下 [新增查詢]

  3. 將下列範例複製並貼到查詢視窗中,然後按一下 [執行]

    USE AdventureWorks2012;
    GO
    -- Find an existing index named IX_ProductVendor_VendorID and delete it if found. 
    IF EXISTS (SELECT name FROM sys.indexes
                WHERE name = N'IX_ProductVendor_VendorID') 
        DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor; 
    GO
    -- Create a nonclustered index called IX_ProductVendor_VendorID 
    -- on the Purchasing.ProductVendor table using the BusinessEntityID column. 
    CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID 
        ON Purchasing.ProductVendor (BusinessEntityID); 
    GO
    

如需詳細資訊,請參閱<CREATE INDEX (Transact-SQL)>。

搭配回到頁首連結使用的箭頭圖示[Top]