SQL SERVER 索引视图
SQL SERVER 中的索引视图类似于其他产品的物化视图。创建语法类似如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[VMPTest]
WITH SCHEMABINDING
AS
SELECT A, B, C
FROM dbo.Table
go
CREATE UNIQUE CLUSTERED INDEX PK_VMPTest_A
ON VMPTest(A)
视图中必须先创建聚集索引后,才可以创建其他非聚集索引。
优点:
查询时可以不引用基表,直接使用视图上的索引。对于一些基表的查询如:SELECT A,C FROM dbo.Table 也可以使用该索引。
限制:
视图定义中不能包含下列元素:
1. TOP
2. text,ntext,或者image字段
3. distinct
4. MIN,MAX,COUNT(*),COUNT(表达式),STDEV,VARIANCE,AVG
5. 可空类型表达式上进行SUM
6. 派生表
7. ROWSET 函数
8. 其他视图(只能引用基准表)
9. UNION
10. 子查询、OUTER连接或者自连接
11. 全文索引谓词
12. COMPUTE,COMPUTE BY
13. ORDER BY
如果视图定义中包含GROUP BY,就必须在SELECT 列表中包含聚合函数 COUNT_BIG(*).
对于AVG 可使用 SUM和COUNT_BIG变相解决。
Schemabinding: 绑定基对象的架构。在修改对象或者删除对象时候它将阻止这个操作