sysindexes (或 sys.indexes) 中出現大量非手動建立的條目,名稱通常為 _WA_Sys_ColumnName_HexSuffix 格式。
這些不是索引,而是查詢優化器自動建立的單欄統計資料,用於估算選擇性以產生最佳執行計畫。
自動統計名稱固定以 _WA_Sys_ 開頭 (SQL Server 7.0/2000/2005/2008 皆同)。
SELECT INDEXPROPERTY(OBJECT_ID('TableName'), 'IndexName', 'IsAutoStatistics')
-- 1 = 自動統計, 0 = 真實索引
SELECT name, auto_created
FROM sys.stats
WHERE object_id = OBJECT_ID('TableName')
AND auto_created = 1; -- 只看自動統計
若某欄位出現 _WA_Sys_ 統計,表示優化器曾需要該欄位的分布資訊,**通常意味著該欄位缺乏合適索引**且頻繁出現在 WHERE/JOIN 條件中。
SELECT OBJECT_NAME(id) AS TableName, COUNT(*) AS AutoStatsCount
FROM sysindexes
WHERE OBJECTPROPERTY(id, 'IsUserTable') = 1
AND INDEXPROPERTY(id, name, 'IsAutoStatistics') = 1
GROUP BY OBJECT_NAME(id)
ORDER BY AutoStatsCount DESC;
ALTER DATABASE MyDB SET AUTO_CREATE_STATISTICS ON/OFF (預設 ON)。善用 _WA_Sys_ 命名慣例與 IsAutoStatistics 屬性,能快速區分索引與統計,進而發現潛在索引缺口。