XML-индекс
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 – не работает! |