SQL Server查看索引如何在幕后工作?我已经阅读了这个TechNet article,但它没有解释视图索引实际上是如何工作的。任何人都可以向我解释这个吗?
注意:我不确定这是否应该用于SF。如果它应该,只需将它移到那里。
答案 0 :(得分: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 :(得分:1)
我必须参考一些课程笔记才能得到正确答案,我记得索引视图包含行数,并根据基础表中的更改更新预聚合数据。 (就像普通的索引一样。)
它特别包含总和和计数,以便它可以处理插入/更新和删除。 (调整总和,然后计数表示结果)。这样一个视图可以输出平均值(总和/计数)但不存储平均值,因为它无法从新数据中调整它。
据我所知,索引视图与普通索引的存储方式相同,使用B-Tree,数据页并拥有自己的IAM。
这就是我记得的一切。