SQL Server视图索引是如何工作的?

SQL Server视图索引是如何工作的?,sql,sql-server,performance,tsql,Sql,Sql Server,Performance,Tsql,SQL Server视图索引是如何工作的?我读过这篇文章,但它没有解释视图索引实际上是如何工作的。谁能给我解释一下吗 注意:我不确定这是否应该发生在旧金山。如果应该,就把它移到那边。我必须参考一些课程笔记才能得到正确的答案,我记得索引视图包含行数,并根据基础表中的更改更新预聚合数据。(就像普通索引一样。) 它专门包含总和和计数,以便处理插入/更新和删除。(调整总和和计数,然后表示结果)。这样,视图可以输出平均值(总和/计数),但不存储平均值,因为它无法根据来自它的新数据对其进行调整 据我记忆所及

SQL Server视图索引是如何工作的?我读过这篇文章,但它没有解释视图索引实际上是如何工作的。谁能给我解释一下吗


注意:我不确定这是否应该发生在旧金山。如果应该,就把它移到那边。

我必须参考一些课程笔记才能得到正确的答案,我记得索引视图包含行数,并根据基础表中的更改更新预聚合数据。(就像普通索引一样。)

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

据我记忆所及,索引视图的存储方式与普通索引相同,使用B树、数据页,并且有自己的IAM


这就是我脑海中所记得的一切。

在查询编译期间,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。与任何删除或更新类似