視圖返回結果集與表具相同表格形式,可在 SQL 語句中如表般引用,故稱「虛表」。標準視圖結果集不以表形式儲存,僅在執行引用視圖的查詢時,SQL Server 才將基礎表資料合併成視圖邏輯結構。此動態生成機制在大量資料行、複雜聚合或連接操作時,會帶來沉重系統負擔,尤其頻繁引用大容量視圖時更顯著。
為視圖建立叢集索引可顯著提升效能。建立後,視圖結果集如叢集索引表般實際儲存於資料庫中。
FROM 子句未直接引用視圖的查詢中使用視圖索引權衡考量: 維護索引視圖比維護基礎表索引更複雜。若認為以資料修改增加系統負擔為代價、換取檢索速度提升屬值得,則應建立視圖索引。
CREATE VIEW 時,ANSI_NULLS 與 QUOTED_IDENTIFIER 必須設為 ONANSI_NULLS 必須為 ONSCHEMABINDING 選項SCHEMABINDINGowner.objectname 形式引用表或函數SELECT 語句不可包含:
* 或 tablename.* 定義欄位(必須明確列出欄位名)UNION、DISTINCT、TOP、ORDER BY、COMPUTE、COMPUTE BY、COUNT(*)AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 等彙總函數可建立多個索引,但第一個必須是叢集索引,其後才能建立非叢集索引。執行 CREATE INDEX 前必須確保:
ANSI_NULLS、ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、CONCAT_NULL_YIELDS_NULL、QUOTED_IDENTIFIER 全為 ON;NUMERIC_ROUNDABORT 為 OFFtext、ntext、image 類型欄位SELECT 含 ORDER BY,叢集索引鍵值僅能為 ORDER BY 定義的欄位修改視圖資料時,選項設定必須與建立索引時一致,否則 SQL Server 回報錯誤並回滾 INSERT、UPDATE、DELETE 操作。