创建索引视图

CREATE VIEW UserInfoView
WITH SCHEMABINDING
AS
SELECT Email,User_ID from dbo.User_Info
GO
--以邮箱创建一个唯一聚集索引
CREATE UNIQUE CLUSTERED INDEX ix_UserInfo_Email
ON UserInfoView (Email);
GO

注意:创建索引视图要点: 

1: CREATE VIEW memberView后面要跟上WITH SCHEMABINDING

理由:• 使用 schemaname.objectname 明确识别视图所引用的所有对象,而不管是哪个用户访问该视图。 

   • 不会以导致视图定义非法或强制 SQL Server 在该视图上重新创建索引的方式,更改视图定义中所引用的对象。

2:视图上的第一个索引必须为 CLUSTERED 和 UNIQUE。

理由:必须为 UNIQUE 以便在维护索引视图期间,轻松地按键值查找视图中的记录,并阻止创建带有重复项目的视图(要求维护特殊的逻辑)。必须为 CLUSTERED,因为只有聚集索引才能在强制唯一性的同时存储行。

3:以下情况可考虑创建索引视图:

    • 可预先计算聚合并将其保存在索引中,从而在查询执行时,最小化高成本的计算。

     可预先联接各个表并保存最终获得的数据集。

    • 可保存联接或聚合的组合。

4:基础表的更新会引发索引视力的更新。 

5:索引视图的创建同时会带来维护上的开销。

理由:• 因为索引视图是物理存在的。

   • 要额外的维护索引. 

部分文字来自网上

原文地址:https://www.cnblogs.com/icyJ/p/IndexView.html