2009-08-28 2 views
2

Я использую SQL Server 2008 и начал искать с помощью индексированных представлений, помогая мне ускорить некоторые из моих запросов ... поскольку моя схема isn Базовый.Не уверен, что я понимаю, что индексированный просмотр делает за кулисами, в SqlServer

Так что, если у меня есть таблица, которая является следующее ...

**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 может быть нулевым. Поэтому мне нужно сделать это.

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

У меня есть представление индекса для детей таблицы внутренней join'd к родительской таблице (обратите внимание, я только индексировать некоторые поля из каждой таблицы) ...

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

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

ответ

2

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

+0

но какое содержание этой таблицы? тот же материал, что и исходная таблица? так что у меня было бы два экземпляра данных ГЕОГРАФИИ? или это вторая таблица _invisible_ только цифры, которые являются индексами для разных столбцов и т. д.? –

+0

«Результат запроса» (любой столбец, включенный в представление) будет сохранен в индексе. Также как таблица, в которой хранятся все данные столбцов. Указатели на исходные строки таблицы не сохраняются (между данными в представлении и таблицами резервных копий необязательно есть одна-единственная связь), думайте о соединениях и вычислениях) –

+0

святой моли! я мог бы объяснить, почему мой размер db ... ну, получится массивный: P –