最近在做索引优化,发现在SQL Server 2005中是可以在视图上建立索引的,但是建立索引后视图便被物化了。

在视图上创建索引需要三个条件:

1、  视图必须绑定到框架

即在CREATE VIEW 语句中,必须加上 WITH SCHEMABINDING。

2、  索引必须是唯一索引

即在CREATE INDEX 中必须指定 UNIQUE。

3、  索引必须是聚集索引

 

但是我在建立视图索引的时候,发现无法将视图绑定到框架的错误。下面是网上的解决方案:

 

CREATE VIEW [dbo].[vW_S]
WITH SCHEMABINDING 
AS
SELECT     a.F1,a.F2, a.F3
FROM         dbo.T1 a
INNER JOIN T2 b ON a.Id=b.Id
GO

提示错误:

消息 4512,级别 16,状态 3,过程 vW_S,第 4 行

无法将 视图''dbo.vW_S'' 绑定到架构,因为名称 ''T2 对于架构绑定无效。名称必须由两部分构成,并且对象不能引用自身。

 

什么意思呢?什么叫名称必须由两部分构成?上网找了找,才知道T2必须写成这样:dbo.T2。注意,如果在前面再加上数据库的名称,如:[db].[dbo].[T2],,纯属画蛇添足,同样出错。