Как работают индексы SQL Server View под капотом? - PullRequest
2 голосов
/ 06 октября 2009

Как работают индексы SQL Server View? Я прочитал эту статью TechNet , но она не объясняет, как на самом деле работает индекс просмотра. Кто-нибудь может мне это объяснить?

Примечание: Я не уверен, должно ли это быть на SF. Если нужно, просто переместите его туда.

Ответы [ 2 ]

3 голосов
/ 06 октября 2009

Во время компиляции запроса компилятор 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 голос
/ 06 октября 2009

Мне бы пришлось обратиться к некоторым примечаниям к курсу, чтобы получить правильный ответ, я помню, что индексированное представление содержит счетчик строк и обновляет предварительно агрегированные данные на основе изменений в базовой таблице. (Так же, как нормальный индекс.)

Он конкретно содержит сумму и количество, чтобы он мог обрабатывать вставки / обновления и удаления. (Скорректируйте сумму и количество, затем представьте результат). Таким образом, представление может выводить среднее значение (сумма / количество), но не хранит среднее, поскольку оно не сможет изменить его по новым поступающим данным.

Насколько я помню, индексированное представление хранится так же, как и обычный индекс, с использованием B-дерева, страниц данных и имеет свой собственный IAM.

Это все, что я помню, в верхней части головы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...