最近在對視圖進行優化的時候,之前的查詢效率不理想,所有想給視圖添加索引,提供查詢效率,遇到這個問題,查了一位博主的文章,但是說的不是很詳細,在這里說明白一些。
修改此問題 需要在 創建視圖語句中加上 with SCHEMABINDING
--創建索引視圖 create view 視圖名 with schemabinding as select 語句 go
--創建索引視圖需要注意的幾點
--創建索引視圖
1 create view 視圖名 with schemabinding 2 as 3 select 語句 4 go
---創建索引視圖需要注意的幾點
1. 創建索引視圖的時候需要指定表所屬的架構
--錯誤寫法
1 create view v_f with schemabinding 2 as 3 select 4 a.a,a.b,b.a,b.b 5 from 6 a join b 7 on 8 a.id=b.id 9 go
---正確寫法:
1 create view v_f with schemabinding 2 as 3 select 4 a.a,a.b,b.a,b.b 5 from 6 dbo.a join dbo.b 7 on 8 a.id=b.id 9 go
2.在創建索引視圖的select語句時,不使用*,必須指定具體的列名
--錯誤寫法
1 create view v_f with schemabinding 2 as 3 select 4 * 5 from 6 dbo.a join dbo.b 7 on 8 a.id=b.id 9 go
---正確寫法
1 create view v_f with schemabinding 2 as 3 select 4 a.a,a.b,b.a,b.b 5 from 6 dbo.a join dbo.b 7 on 8 a.id=b.id 9 go
3.在創建索引視圖的select 語句中,不能存在重復的列名,這個不舉例了
4. 只能為索引視圖創建唯一聚集索引
--錯誤的寫法
1 create clustered index ix_uniquetb on v_tb 2 go
--正確的寫法
1 create unique clustered index ix_uniquetb on v_tb 2 go