Индексирование столбца XML

Оценить
(0 голоса)

Database Engine внутренне сохраняет значения xml как большой двоичный объект. Без индекса для таких объектов во время выполнения запроса осуществляется декомпозиция, что может занять много времени. Поэтому причиной выполнять индексирование столбцов xml является увеличение производительности запроса.

Система поддерживает первичный индекс xml и три типа вторичных индексов xml. Первичный индекс xml индексирует все теги, значения и пути в экземплярах XML столбца xml. Запросы используют первичный индекс xml для получения скалярных значений или вложенных деревьев xml.

В примере 28.3 создается первичный индекс xml.

 

Индексирование столбца XML

 

Как вы можете видеть из примера 28.3, создание первичного индекса xml похоже на создание «нормального» индекса. Первичный индекс xml использует экземпляр xml для генерации вне его соответствующей внутренней реляционной формы. Таким путем исключается повторяющаяся генерация внутренней формы для запросов и обновлений.

Для дальнейшего улучшения производительности выборки данных вы можете создавать вторичные индексы xml. Первичный индекс xml должен существовать до создания вторичных индексов. Вы можете создавать три типа вторичных индексов xml с использованием различных ключевых слов:

♦ for path создает вторичный индекс xml для структуры документа;

♦ for value создает вторичный индекс xml для значений элемента и атрибута столбца xml;

♦ for property создает вторичный индекс xml, который отыскивает свойство.

Далее представлены некоторые рекомендации по созданию вторичных индексов xml.

♦ Если ваши запросы значительно используют выражения путей в столбцах xml, то, скорее всего, индекс path повысит их скорость. Наиболее общим случаем является использование метода exist () для столбцов xml в предложении where в языке Transact-SQL. (Метод exist обсуждается позже.)

♦ Если ваши запросы отыскивают множество значений из индивидуальных экземпляров xml с использованием выражений пути, то полезным может быть индекс property.

♦ Если ваши запросы включают поиск значений в экземплярах xml без знания имен элементов или атрибутов, которые содержат эти значения, то вам может понадобиться создать индекс value.

В примере 28.4 показано использование ключевого слова for path. (Синтаксис создания всех других вторичных индексов xml аналогичен.)

 

Индексирование столбца XML

 

В примере 28.4 показано создание вторичного индекса xml с ключевым словом for path. Если вы хотите определить вторичный индекс xml, вы должны указать предложение using.

Индексы xml имеют некоторые ограничения по сравнению с «нормальными» индексами:

♦ индексы xml не могут быть составными индексами;

♦ не существует кластерных индексов xml.

SQL Server также поддерживает соответствующие операторы: alter index и drop index. Оператор alter index позволяет изменять структуру существующего индекса XML, а оператор удаляет drop index подобный индекс.

Существует также представление каталога для индексов xml, называемое sys .xmiindexes. Это представление возвращает одну строку для каждого индекса xml. Наиболее важными столбцами этого представления являются using_xmi_index id и secondarytype. Первый указывает, является индекс первичным или вторичным, а второй определяет тип вторичного индекса («Р» для path, «V» для value и «R» для property вторичных индексов). Помимо этого, данное представление наследует столбцы из представления каталога sys.indexes.


Типизированные в сравнении с нетипизированными XML
Схемы XML и SQL Server
Типизированные столбцы XML, переменные и параметры
Представления каталогов схемы XML
Хранение документов XML с использованием декомпозиции

Добавить комментарий


Защитный код
Обновить

Авторизация



© 2018 www.serversql.ru. Все права защищены.