2009-10-06 113 views

回答

3

在查询编译期间,SQL编译器将在元数据中看到索引视图定义,并将生成执行计划,该计划将索引视图数据与表一起维护。例如:

create table foo (a int not null, 
    constraint pkfoo primary key (a)) 
GO 

create view vFoo 
with schemabinding 
as 
select a from dbo.foo 
GO 

create unique clustered index cdxvFoo on vFoo(a) 
GO 

insert into foo (a) values (1); 
GO 

如果你看看INSERT语句,你会看到它包含聚集索引插入,一进foo.pkFoo和一成vFoo.cdxvFoo的执行计划。与任何删除或更新类似。

1

我不得不引用一些课程笔记以获得正确的答案,我记得索引视图包含行数,并根据基础表中的更改更新预聚合的数据。 (就像一个正常的索引。)

它具体包含的总和和计数,以便它可以处理插入/更新和删除。 (调整总和和计数然后表示结果)。通过这种方式,视图可以输出平均值(总和/计数),但不会存储平均值,因为它无法根据新数据对其进行调整。

据我所知,索引视图的存储方式与普通索引相同,使用B-Tree,数据页,并拥有自己的IAM。

这就是我所记得的我的头顶。