SQL Server 2005 - 如何查詢索引資訊

摘要:SQL Server 2005 - 如何查詢索引資訊

當您在建立、修改或移除一個索引時,可能需要先查詢有哪些既存的索引。SQL Server 提供了相當多的方式讓您查詢索引資訊,本節將說明這些方式: 

r SQL Server Management Studio

Ø 物件總管

「物件總管」中依序展開您欲查詢其索引的「資料庫/資料表/索引」項目,此舉可以讓您一次查詢多個索引資訊(比方說,索引名稱、叢集索引、非叢集索引、唯一索引或非唯一索引)。

Ø 「索引屬性」視窗

如圖表 1 所示,於「物件總管」中您欲查詢其索引的名稱上,按一下滑鼠右鍵,接著選取「屬性」指令,然後在「索引屬性」視窗中除了可以查詢索引資訊之外,還可以修改這個索引相關的設定。比方說,要指定儲存在葉層中的非鍵值欄是哪些,就可以按一下「選取頁面」中的「內含資料行」頁面,然後加入您要的非鍵值欄。 

圖表 1

 

Ø 報表

如圖表 2 所示,在「摘要」視窗中選取您欲查詢其索引的資料庫,按一下「報表」下拉清單中的「索引使用量統計表」指令,然後在報表結果視窗按一下滑鼠右鍵,選取「匯出/Excel指令,將報表存檔,接著您就可以開啟該Excel報表來查閱索引相關的資訊。如圖表 3 所示,這份報表提供「索引使用量」統計資料,說明曾使用過哪些索引,而SQL Server使用這些索引的狀況。

另外這份報表也有提供「索引運作」統計資料,顯示在同一個資料表中索引的狀況。比方說,顯示目前分頁配置的數量,位於分葉與非分葉的數目有多少個。 

圖表2 

圖表3 

r 系統預存程序

SQL Server
提供兩個系統預存程序來讓我們查詢某一個資料表擁有哪些索引,以及這些索引相關的資訊:

Ø sp_helpindex

比方說,要知道「北風貿易」 資料庫之「人事」資料表中相關的索引資訊就可以使用如下的程式碼:

USE
北風貿易;
GO
sp_helpindex
人事;

如果在查詢結果的 index_keys 欄位中,某個索引鍵值欄名稱後面有 (-),就表示這個索引鍵值欄係以遞減方式排序。

Ø sp_help

使用 sp_help 查詢某個資料表所得到的資訊,會比使用 sp_helpindex 顯示更多的資訊,當然查詢的結果也會包括 sp_helpindex 的資訊。比方說,下面的程式碼就是查詢「人事」資料表中的資訊:

sp_help
人事; 

r  系統目錄檢視表

SQL Server
允許我們透過系統目錄檢視表來查詢索引的狀態,要得知某個資料庫的索引資訊或是統計資訊,可以使用如下所列示的系統目錄檢視表:

Ø sys.indexes

顯示某個資料庫中索引的資訊,包含:索引名稱、類型、使用的檔案群組等。

Ø sys.index_columns

僅顯示 sys.indexes 系統目錄檢視表部分的資訊。

Ø  sys.stats

由於每個索引都會有一個相同名稱與相同識別碼的統計資料記錄,因此查詢統計資料的 sys.stats 目錄檢視表就是在查詢索引的資料,這個目錄檢視表會顯示識別碼、統計資料是否由使用者建立或是由 SQL Server 自動建立等資訊。

Ø  sys.stats_columns

僅顯示 sys.stats 系統目錄檢視表部分的資訊。

Ø sys.xml_indexes

顯示 xml 資料型別的索引資訊,包含索引名稱、類型、次要 XML 索引的類型等。 

例如,您可以透過如下的程式碼來查詢某個資料庫中索引的資訊:

SELECT * FROM sys.indexes;
 

r  系統函數

SQL Server
提供多個系統函數可以查詢索引的狀態: 

Ø sys.dm_db_index_physical_stats

顯示某個索引大小、資料片段等資訊。

Ø sys.dm_db_index_operational_stats

顯示某個索引中的實體 IO、分頁或是資料記錄鎖定等統計資訊。

Ø sys.dm_db_index_usage_stats

顯示不同類型之索引其使用的狀態資訊。

ØINDEXPROPERTY

顯示某個索引的特定資訊,比方說顯示填充係數、索引是否已經停用、是否為叢集索引等。

Ø INDEX_COL

由某個索引鍵值欄的識別碼與位置來得知該索引的欄位名稱。