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 索引)

    当您使用 ALTER INDEX 且不包含 FOR 子句时,只能指定 <index_options>。 在您使用 ALTER INDEX 添加或删除索引中的路径时,索引选项将不是有效的参数。

例如:PAD_INDEX = ON

备注

重要说明重要提示

在您运行 ALTER INDEX 语句时,始终重新生成选择性 XML 索引。 请务必考虑此过程对服务器资源的影响。

限制和局限

当您使用 ALTER INDEX 且不包含 FOR 子句时,只能指定 <index_options>。 在您使用 ALTER INDEX 添加或删除索引中的路径时,索引选项将不是有效的参数。

安全性

权限

若要运行 ALTER INDEX,需要对表或视图拥有 ALTER 权限。

示例

下面的示例说明 ALTER INDEX 语句。 该语句将路径 '/a/b/m' 添加到索引的 XQuery 部分,并且从在 CREATE SELECTIVE XML INDEX 主题的示例中创建的索引的 SQL 部分删除路径 '/a/b/e'。 要删除的路径由在创建时提供给它的名称标识。

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 索引指定路径和优化提示