ALTER INDEX (選擇性 XML 索引)
適用於:SQL Server Azure SQL 資料庫 Azure 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_name
database_name..table_name
schema_name.table_name
table_name
[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 路徑時,會提供建立路徑時指定的名稱。
[WITH (<index_options>)]
使用未包含 FOR 子句的 ALTER INDEX 時,只能指定 <index_options>。 當您使用 ALTER INDEX 加入或移除索引中的路徑時,索引選項不是有效的引數。 如需索引選項的詳細資訊,請參閱 CREATE XML INDEX (選擇性 XML 索引)。
備註
重要
當您執行 ALTER INDEX 陳述式時,一律會重建選擇性 XML 索引。 請務必考慮這個程序對於伺服器資源的影響。
安全性
權限
需要有資料表或檢視的 ALTER 權限才能執行 ALTER INDEX。
範例
下列範例顯示 ALTER INDEX 陳述式。 此陳述式會將路徑 '/a/b/m'
加入索引的 XQuery 部分,並且從 CREATE SELECTIVE XML INDEX (Transact-SQL) 主題的範例中所建立索引的 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;