SQL Server 2000 引入索引視圖,2005 進一步完善。本質上,普通視圖只是封裝 SELECT 的元數據,運行時即時具體化;而唯一聚集索引將視圖結果集物理持久化,查詢執行時直接讀取預計算結果,省去昂貴的 JOIN/聚合開銷。
NOEXPAND 提示)SUM/COUNT/AVG 等結果預存,查詢時零計算官方測試數據顯示:隨查詢複雜度(表數、聚合數、謂詞數)上升,索引視圖加速比可達 10x-100x(百萬行級表)。
視圖上創建非聚集索引,可覆蓋聚集索引鍵未包含的查詢列,避免「鍵查找」或「全掃描」。但每個索引增加 DML 維護開銷,需在「查詢加速」與「寫入放大」間尋找平衡點。
WITH (NOEXPAND) 強制使用索引視圖是「以空間換時間、以寫入換讀取」的經典權衡,適用於讀多寫少、查詢模式固定的報表/分析場景。