方法1. 使用系統表
-- 查詢一個表中的索引及索引列
USE AdventureWorks2008
GO
SELECT indexname = a.name , tablename = c. name , indexcolumns = d .name , a .indid
FROM sysindexes a JOIN sysindexkeys b ON a .id = b .id AND a .indid = b.indid
JOIN sysobjects c ON b .id = c .id
JOIN syscolumns d ON b .id = d .id AND b .colid = d .colid
WHERE a .indid NOT IN ( 0 , 255 )
-- and c.xtype='U' and c.status>0 -- 查所有用戶表
AND c .name = 'DatabaseLog' --查指定表
ORDER BY c. name ,
a.name ,
d.name
方法2. 使用系統存儲過程
sp_helpindex :報告有關表或視圖上索引的信息。
/* sp_helpindex [ @objname = ] 'name' 參數 :[@objname =] 'name' 是當前數據庫中表或視圖的名稱。name 的數據類型為 nvarchar(776),沒有默認值。 */ use DB_NAME go sp_helpindex 'Tablename'
返回代碼值 0(成功)或 1(失敗) 結果集:
| 列名 |
數據類型 |
描述 |
| index_name |
sysname |
索引名。 |
| index_description |
varchar(210) |
索引描述。 |
| index_keys |
nvarchar(2078) |
表或視圖列,在這些列上構造索引。 |
被降序索引的列將在結果集中列出,該列的名稱后面帶有一個減號 (-),當列出被升序索引的列(這是默認情況)時,只帶有該列的名稱。 注釋 如果已經用 UPDATE STATISTICS 的 NORECOMPUTE 選項設置了索引,那么在 sp_helpindex 的結果集中會顯示這個信息。
