Share via


ALTER INDEX (選択的 XML インデックス)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

既存の選択的 XML インデックスを変更します。 ALTER INDEX ステートメントは次のアイテムの 1 つ以上を変更します。

  • インデックス付きパスの一覧 (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.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) します。 パスを追加する場合は、CREATE SELECTIVE XML INDEX ステートメントでパスを作成するために使用する同じ構文を使用します。 CREATE または ALTER ステートメントで指定できるパスについては、「選択的 XML インデックスのパスと最適化ヒントの指定」をご覧ください。

  • パスを削除 (REMOVE) します。 パスを削除 (REMOVE) する場合、パスの作成時にパスに付けられた名前を指定します。

[WITH (<index_options>)]
<index_options> は、ALTER INDEX を FOR 句なしで使用する場合にのみ、指定することができます。 ALTER INDEX を使用して、インデックスにパスを追加または削除する場合、インデックス オプションは有効な引数ではありません。 インデックス オプションについては、「CREATE XML INDEX (選択的 XML インデックス)」をご覧ください。

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

解説

重要

ALTER INDEX ステートメントを実行すると、選択的 XML インデックスが常に再構築されます。 サーバーのリソースに対するこの処理の影響を考慮してください。

セキュリティ

アクセス許可

ALTER INDEX を実行するには、少なくともテーブルまたはビューに対する ALTER 権限が必要です。

ALTER INDEX ステートメントの例を次に示します。 このステートメントは、インデックスの XQuery の部分にパス '/a/b/m' を追加し、「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;  

参照

選択的 XML インデックス (SXI)
選択的 XML インデックスの作成、変更、および削除
選択的 XML インデックスのパスと最適化ヒントの指定