Не уверен, понимаю ли я, что индексированное представление делает за кулисами, в SqlServer

Я использую sql server 2008 и начал обнаруживать, что использование индексированных представлений помогает мне ускорить некоторые из моих запросов... поскольку моя схема не является базовой.

Итак, если у меня есть таблица, которая выглядит следующим образом...

**ParentTable
ParentId INT PK IDENTITY
Name VARCHAR(MAX)

**ChildTable
ChildId INT PK IDENTITY
ParentId INT (FK to the table above)
Name VARCHAR(MAX)
Boundary GEOGRAPHY
CentrePoint GEOGRAPHY
CentrePointFlattened GEOMETRY

Таким образом, для каждой строки в родительской таблице может быть от нуля до многих дочерних элементов.

Во-первых, если я создам индексное представление дочерних элементов, это не сработает, если поле ParentId может быть нулевым. Поэтому мне нужно сделать это обязательным.

Теперь вопрос.

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

(pseduo sql code)
ParentId INT
Name VARCHAR(MAX) AS ParentName
ChildId INT
Name VARCHAR(MAX) as ChildName
Boundary GEOGRAPHY

Теперь данные для этих 5 полей сериализованы/скопированы в ДРУГОЕ место снова? или представление индекса создает только некоторые идентификаторы индекса, которые являются данными для таблицы?


person Pure.Krome    schedule 28.08.2009    source источник


Ответы (1)


Да. Индексированное представление — это, по сути, еще одна невидимая таблица, которая автоматически обновляется по мере изменения базовых таблиц.

person mmx    schedule 28.08.2009
comment
но каково содержание этой таблицы? тот же материал, что и исходная таблица? поэтому у меня было бы ДВЕ копии данных ГЕОГРАФИИ? или эта вторая невидимая таблица просто числа, которые являются индексами для различных столбцов и т.д.? - person Pure.Krome; 28.08.2009
comment
Результат запроса представления (какой бы столбец ни был включен в представление) будет сохранен в индексе. Так же, как таблица, в которой хранятся все данные столбца. Указатели на исходные строки таблицы не сохраняются (не обязательно существует отношение один к одному между данными в представлении и вспомогательных таблицах, подумайте о соединениях и вычисляемых вещах) - person mmx; 28.08.2009
comment
святая Молли! я мог бы объяснить, почему размер моей базы данных... ну, становится огромным :P - person Pure.Krome; 28.08.2009