2008-04-21

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

SQL Server 2005 - 如何查詢索引資訊
  • 250
  • SQL Server 2005
  • 好文轉寄
  • 平均分數:0 顆星    投票人數:0
    我要評分:     


    當您在建立、修改或移除一個索引時,可能需要先查詢有哪些既存的索引。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

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


    http://blog.xuite.net/alwaysfuturevision/liminzhang/8269389



    --
    [垃圾桶] 裡沒有會話群組?

    沒有留言: