Xml-индекс может существенно увеличить скорость запросов, особенно на больших документах. XML-индекс не строится для отдельного набора узлов – индексируется весь документ, поэтому размер индекса во много раз превышает размер самого XML-документа. Сейчас пока невозможно точно сказать, насколько он замедляет операции DML, и насколько увеличивает производительность запросов, поэтому к построению индекса нужно подходить со здоровой долей скептицизма.
Синтаксис создания XML-индекса:
CREATE XML INDEX index_name ON [ { database_name. [ schema_name ]. | schema_name. } ] table_name (xml_column_name) [ WITH (<xml_index_option> [,...n ]) ] |
Где:
- index_name – имя индекса. Имя индекса должно быть уникальным среди имен индексов данной таблицы.
- xml_column_name – имя колонки XML-типа.
- xml_index_option – опции XML-индекса. Здесь можно указывать те же опции, что и для простого индекса за исключением IGNORE_DUP_KEY, REBUILD и ONLINE.
При создании XML-индекса должны учитываться следующие ограничения:
- Индекс может быть построен только для таблиц с кластерным ключом.
- На одну колонку XML-типа невозможно построить более одного XML-индекса. Однако вы можете совмещать, например, полнотекстовый индекс и XML-индекс.
- Невозможно создать индекс на переменную или на поле представления XML-типа.
- Нельзя изменять тип XML-поля (изменение схемы данных для данного поля), если имеется связанный с ним XML-индекс.
- Пример построения индекса для поля fam таблицы fams следующий:
create xml index XMLIX_fam on dbo.fams |
Удаление индекса выполняется обычной командой drop index, правда, синтаксис ее в Yukon немного изменен по сравнению с SQL Server 2000:
|
|
drop index XMLIX_fam on dbo.fams -- старый синтаксис - drop index dbo.fams.XMLIX_fam – не работает! |