在視圖上創建索引(索引視圖)需滿足嚴格限制。本文彙總 SQL Server 2005 官方文檔中的完整約束清單,作為開發與審查參考。
UNION、EXISTS/NOT EXISTS、DISTINCTORDER BY、TOP、ROWSET 函數COMPUTE/COMPUTE BY、GROUP BY ALL、CUBE/ROLLUP/GROUPING()、HAVINGOPENROWSET/OPENQUERY/OPENDATASOURCE/OPENXMLCONVERT 產生不精確結果OUTER JOIN、自連接、引用其他視圖、引用不同數據庫表/函數text/ntext/image/filestream/xml 列不可用於聚集索引鍵MIN/MAX、STDEV/VAR/AVG、全文謂詞、表提示、內聯/表值函數、派生表/子查詢COUNT_BIG(*)HAVING、CUBE、ROLLUP、GROUPING()GROUP BY,聚集索引鍵僅能引用 GROUP BY 列IGNORE_DUP_KEY 選項索引視圖可包含 float/real 列,但若為非持久化計算列,則不能納入聚集索引鍵。
掌握這些限制,可在設計階段規避「無法創建索引」的報錯,確保索引視圖方案落地可行。