SELECT
索引名稱 = a.name,
表名 = c.name,
索引欄位 = d.name,
欄位位置 = d.colid
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.name = 'message'; -- 指定表名
SELECT
TableId = O.[object_id],
TableName = O.Name,
IndexId = ISNULL(KC.[object_id], IDX.index_id),
IndexName = IDX.Name,
IndexType = ISNULL(KC.type_desc, 'Index'),
Index_Column_id = IDXC.index_column_id,
ColumnID = C.column_id,
ColumnName = C.Name,
Sort = CASE INDEXKEY_PROPERTY(IDXC.[object_id], IDXC.index_id, IDXC.index_column_id, 'IsDescending')
WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
PrimaryKey = CASE WHEN IDX.is_primary_key = 1 THEN N'√' ELSE N'' END,
[Unique] = CASE WHEN IDX.is_unique = 1 THEN N'√' ELSE N'' END,
Ignore_dup_key = CASE WHEN IDX.ignore_dup_key = 1 THEN N'√' ELSE N'' END,
Disabled = CASE WHEN IDX.is_disabled = 1 THEN N'√' ELSE N'' END,
Fill_factor = IDX.fill_factor,
Padded = CASE WHEN IDX.is_padded = 1 THEN N'√' ELSE N'' END
FROM sys.indexes IDX
INNER JOIN sys.index_columns IDXC ON IDX.[object_id] = IDXC.[object_id] AND IDX.index_id = IDXC.index_id
LEFT JOIN sys.key_constraints KC ON IDX.[object_id] = KC.[parent_object_id] AND IDX.index_id = KC.unique_index_id
INNER JOIN sys.objects O ON O.[object_id] = IDX.[object_id]
INNER JOIN sys.columns C ON O.[object_id] = C.[object_id] AND IDXC.column_id = C.column_id
WHERE O.type = 'U' AND O.is_ms_shipped = 0
AND O.name = 'cz201'; -- 目標表名
SELECT index_name, index_type, table_name FROM user_indexes WHERE table_name = 'YOUR_TABLE';
-- 1. 找出未使用索引 (讀取=0, 寫入>0)
SELECT OBJECT_NAME(object_id) AS TableName, name AS IndexName,
user_seeks, user_scans, user_lookups, user_updates
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID() AND OBJECTPROPERTY(object_id, 'IsUserTable') = 1
AND user_seeks + user_scans + user_lookups = 0 AND user_updates > 0
ORDER BY user_updates DESC;
-- 2. 碎片重建/重組 (每周排程)
-- 碎片 5-30% → REORGANIZE; >30% → REBUILD (ONLINE=ON)
-- 參考 Ola Hallengren MaintenanceSolution 或 Minion Reindex
**新版 DMV 取代舊系統表**,輸出完整索引屬性 (類型、排序、約束、填充因子)。「高頻查詢/外鍵/覆蓋/篩選」必建,「低選擇性/大LOB/高寫入」不建。「定期掃描未用/碎片」納入維護計畫,索引才能持續創造價值而非成為負擔。