摘要: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
顯示某個索引中的實體 I/O、分頁或是資料記錄鎖定等統計資訊。
Ø sys.dm_db_index_usage_stats
顯示不同類型之索引其使用的狀態資訊。
ØINDEXPROPERTY
顯示某個索引的特定資訊,比方說顯示填充係數、索引是否已經停用、是否為叢集索引等。
Ø INDEX_COL
由某個索引鍵值欄的識別碼與位置來得知該索引的欄位名稱。