SQL Server视图索引如何在底层工作?我读过这TechNet article,但它并没有解释视图索引如何实际工作。任何人都可以向我解释这个吗?SQL Server视图索引如何在底层工作?
注意:我不确定这是否应该在SF上。如果应该的话,就把它移到那边。
SQL Server视图索引如何在底层工作?我读过这TechNet article,但它并没有解释视图索引如何实际工作。任何人都可以向我解释这个吗?SQL Server视图索引如何在底层工作?
注意:我不确定这是否应该在SF上。如果应该的话,就把它移到那边。
在查询编译期间,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的执行计划。与任何删除或更新类似。
我不得不引用一些课程笔记以获得正确的答案,我记得索引视图包含行数,并根据基础表中的更改更新预聚合的数据。 (就像一个正常的索引。)
它具体包含的总和和计数,以便它可以处理插入/更新和删除。 (调整总和和计数然后表示结果)。通过这种方式,视图可以输出平均值(总和/计数),但不会存储平均值,因为它无法根据新数据对其进行调整。
据我所知,索引视图的存储方式与普通索引相同,使用B-Tree,数据页,并拥有自己的IAM。
这就是我所记得的我的头顶。