适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 中的 SQL 数据库
修改现有的选择性 XML 索引。 该 ALTER INDEX 语句更改了以下一项或多项:
已建立索引的路径的列表(FOR 子句)。
命名空间的列表(WITH XMLNAMESPACES 子句)。
索引选项(WITH 子句)。
您不能更改辅助选择性 XML 索引。 有关详细信息,请参阅创建、更改和删除辅助选择性 XML 索引。
语法
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.table_name | schema_name.table_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
)
参数
index_name
要更改的现有索引的名称。
<table_object>
包含要建立索引的 XML 列的表。 使用以下格式之一:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
[WITH XMLNAMESPACES (xmlnamespace_list<)]
要建立索引的路径使用的命名空间的列表。 有关 WITH XMLNAMESPACES 子句的语法的信息,请参阅 WITH XMLNAMESPACES (Transact-SQL)。
FOR (promoted_node_path_action_list<)
要添加或删除的已建立索引的路径的列表。
使用 ADD 语句添加路径。 当你添加路径时,你使用了用语 CREATE SELECTIVE XML INDEX 句创建路径的语法。 有关可以在 CREATE 或 ALTER 语句中指定的路径的信息,请参阅为选择性 XML 索引指定路径和优化提示。
使用 REMOVE 语句删除路径。 删除路径时,请提供创建路径时的路径名。
[WITH (index_options<)]
只有在没有 FOR 条款的情况下,ALTER INDEX才能指定 <index_options>。 当你用 ALTER INDEX 来添加或删除索引路径时,索引选项并不是有效的参数。 有关索引选项的信息,请参见CREATE XML INDEX(选择性XML索引)。
注解
重要
当你运行一个 ALTER INDEX 语句时,选择性XML索引总是会被重建。 请务必考虑此过程对服务器资源的影响。
安全性
权限
运行 ALTER INDEX需要对表或视图的 ALTER 权限。
示例
下面的示例演示了一个 ALTER INDEX 语句。 该语句将路径'/a/b/m'添加到索引的 XQuery 部分,并删除示例中主题(Transact-SQL)中创建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;