ALTER INDEX (селективные XML-индексы)

Изменяет существующий селективный XML-индекс. Инструкция ALTER INDEX изменяет один или несколько из следующих элементов:

  • Список индексированных путей (предложение FOR).

  • Список пространств имен (предложение WITH XMLNAMESPACES).

  • Параметры индекса (предложение WITH).

Дополнительные сведения см. в следующих разделах:

Нельзя изменить вторичные селективные XML-индексы. Дополнительные сведения см. в разделе Создание, изменение и удаление вторичных селективных XML-индексов.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

ALTER INDEX index_name
ON <table_object> 
[WITH XMLNAMESPACES (<xmlnamespace_list>)]
FOR (<promoted_node_path_action_list>)
[WITH (<index_options>)]

<table_object> ::= { [ database_name. [ schema_name ] . | schema_name. ] table_name }

<promoted_node_path_action_list> ::= <promoted_node_path_action_item> [, <promoted_node_path_action_list>]

<promoted_node_path_action_item>::= <add_node_path_item_action> | <remove_node_path_item_action>

<add_node_path_item_action> ::= ADD <path_name> = <promoted_node_path_item>

<promoted_node_path_item>::=<xquery_node_path_item> | <sql_values_node_path_item>

<remove_node_path_item_action> ::= REMOVE <path_name> 

<path_name_or_typed_node_path>::= <path_name> | <typed_node_path>

<typed_node_path> ::= <node_path> [[as XQUERY <xsd_type_ext>] | [as SQL <sql_type>]]

<xquery_node_path_item> ::= <node_path> [as XQUERY <xsd_type_or_node_hint>] [SINGLETON]

<xsd_type_or_node_hint> ::= [<xsd_type>] [MAXLENGTH(x)] | 'node()'

<sql_values_node_path_item> ::= <node_path> as SQL <sql_type> [SINGLETON]

<node_path> ::= <character_string_literal>

<xsd_type_ext> ::= <character_string_literal>

<sql_type> ::= <identifier>

<path_name> ::= <identifier>

<xmlnamespace_list> ::= <xmlnamespace_item> [, <xmlnamespace_list>]

<xmlnamespace_item> ::= <xmlnamespace_uri> AS <xmlnamespace_prefix>

<xml_namespace_uri> ::= <character_string_literal>

<xml_namespace_prefix> ::= <identifier>

<index_options ::= ( 
  | PAD_INDEX  = { ON | OFF }
  | FILLFACTOR = fillfactor
  | SORT_IN_TEMPDB = { ON | OFF }
  | IGNORE_DUP_KEY =OFF
  | DROP_EXISTING = { ON | OFF }
  | ONLINE =OFF
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
)

Аргументы

Предложение ALTER

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

Пример. ALTER INDEX sxi_index

ON, предложение

  • <table_object>
    Таблица, которая содержит индексируемый XML-столбец. Используйте один из следующих форматов:

    • database_name.schema_name.table_name

    • database_name..table_name

    • schema_name.table_name

    • table_name

Пример. ON Tbl

WITH XMLNAMESPACES, предложение

  • <xmlnamespace_list>
    Список пространств имен, используемых индексируемыми путями. Дополнительные сведения о синтаксисе предложения WITH XMLNAMESPACES см. в разделе WITH XMLNAMESPACES (Transact-SQL).

FOR, предложение

  • <promoted_node_path_action_list>
    Список индексированных путей, который необходимо добавить или удалить.

    • Добавление пути через ADD. При добавлении пути через ADD используется тот же синтаксис, что и при создании пути инструкцией CREATE SELECTIVE XML INDEX. Сведения о путях, которые вы можете указать в инструкции CREATE или ALTER, см. в разделе Задайте путь и указания по оптимизации для селективных XML-индексов.

    • Удаление пути через REMOVE. При удалении пути через REMOVE указывается имя, которое было дано пути при его создании.

Пример.

FOR 
(
    ADD pathm = '/a/b/m' as XQUERY 'node()' ,
    REMOVE pathabe
)

Параметры индекса

  • <index_options>
    Дополнительные сведения о параметрах индекса см. в разделе CREATE XML INDEX (селективные XML-индексы).

    <index_options> указывается только в том случае, когда ALTER INDEX не имеет предложения FOR. Если для добавления или удаления пути в индексе используется ALTER INDEX, то параметры индекса являются недопустимыми аргументами.

Пример. PAD_INDEX = ON

Замечания

Важное примечаниеВажно!

При выполнении инструкции ALTER INDEX селективный XML-индекс всегда перестраивается. Необходимо учитывать влияние этого процесса на ресурсы сервера.

Ограничения

<index_options> указывается только в том случае, когда ALTER INDEX не имеет предложения FOR. Если для добавления или удаления пути в индексе используется ALTER INDEX, то параметры индекса являются недопустимыми аргументами.

Безопасность

Разрешения

Для использования ALTER INDEX требуется разрешение ALTER для таблицы или представления.

Примеры

В следующем примере показана инструкция ALTER INDEX. Эта инструкция добавляет путь '/a/b/m' в часть индекса XQuery и удаляет путь '/a/b/e' из части SQL индекса, созданного в примере в разделе CREATE SELECTIVE XML INDEX. Путь для удаления определяется по имени, указанному при его создании.

ALTER INDEX sxi_index
ON Tbl
FOR 
(
    ADD pathm = '/a/b/m' as XQUERY 'node()' ,
    REMOVE pathabe
)

В следующем примере показана инструкция ALTER INDEX с параметром индекса. Параметры индекса недопустимы, так как инструкция не использует предложение FOR для добавления или удаления пути.

ALTER INDEX sxi_index
ON Tbl
PAD_INDEX = ON

См. также

Основные понятия

Выборочный XML-индекс (SXI)

Создание, изменение и удаление селективных XML-индексов

Задайте путь и указания по оптимизации для селективных XML-индексов