CREATE SELECTIVE XML INDEX
Crea un nuovo indice XML selettivo nella tabella e nella colonna XML specificate.
Gli indici XML selettivi contribuiscono al miglioramento delle prestazioni relative all'indicizzazione e all'esecuzione di query XML indicizzando solo il subset di nodi su cui vengono in genere eseguite query.
Per ulteriori informazioni, vedere gli argomenti seguenti:
È inoltre possibile creare indici XML selettivi secondari. Per informazioni, vedere Creare, modificare o eliminare indici XML selettivi secondari.
Convenzioni della sintassi Transact-SQL
Sintassi
CREATE SELECTIVE XML INDEX index_name
ON <table_object> (<xml_column_name>)
[WITH XMLNAMESPACES (<xmlnamespace_list>)]
FOR (<promoted_node_path_list>)
[WITH (<index_options>)]
<table_object> ::= { [ database_name. [ schema_name ] . | schema_name. ] table_name }
<promoted_node_path_list> ::= <named_promoted_node_path_item> [, <promoted_node_path_list>]
<named_promoted_node_path_item> ::= <path_name> = <promoted_node_path_item>
<promoted_node_path_item>::=<xquery_node_path_item> | <sql_values_node_path_item>
<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> ::= <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
)
Argomenti
Clausola CREATE
- index_name
Nome del nuovo indice che si desidera creare. I nomi degli indici devono essere necessariamente univoci all'interno di una tabella, ma non all'interno di un database. Devono inoltre essere conformi alle regole degli identificatori.
Ad esempio: CREATE SELECTIVE XML INDEX sxi_index
Clausola ON
<table_object>
Tabella contenente la colonna XML che si desidera indicizzare. Utilizzare uno dei seguenti formati:database_name.schema_name.table_name
database_name..table_name
schema_name.table_name
table_name
xml_column_name
Nome della colonna XML contenente i percorsi che si desidera indicizzare.
Ad esempio: ON Tbl(xmlcol)
Clausola WITH XMLNAMESPACES
- <xmlnamespace_list>
Elenco degli spazi dei nomi utilizzati nei percorsi da indicizzare. Per informazioni sulla sintassi della clausola WITH XMLNAMESPACES, vedere WITH XMLNAMESPACES (Transact-SQL).
Ad esempio: WITH XMLNAMESPACES ('http://www.tempuri.org/' as myns)
Clausola FOR
- <promoted_node_path_list>
Elenco di percorsi da indicizzare con hint di ottimizzazione facoltativi. Per informazioni sui percorsi e sugli hint di ottimizzazione che è possibile specificare nell'istruzione CREATE o ALTER, vedere Specificare percorsi e hint di ottimizzazione per indici XML selettivi.
Esempio:
FOR(
pathab = '/a/b' as XQUERY 'node()'
pathabc = '/a/b/c' as XQUERY 'xs:double',
pathdtext = '/a/b/d/text()' as XQUERY 'xs:string' MAXLENGTH(200) SINGLETON
pathabe = '/a/b/e' as SQL NVARCHAR(100)
)
Clausola WITH
- <index_options>
Per informazioni sulle opzioni di indice, vedere CREATE XML INDEX (indici XML selettivi).
Procedure consigliate
Creare un indice XML selettivo anziché un indice XML comune nella maggior parte dei casi per migliorare le prestazioni e usufruire di uno spazio di archiviazione più efficiente. Non è tuttavia consigliabile creare un indice XML selettivo in presenza di una delle condizioni indicate di seguito.
È necessario eseguire il mapping di un numero elevato di percorsi del nodo.
È necessario supportare le query per elementi sconosciuti o in una posizione sconosciuta.
Limitazioni e restrizioni
Per informazioni sulle limitazioni e restrizioni, vedere Indici XML selettivi.
Sicurezza
Autorizzazioni
È richiesta l'autorizzazione ALTER per la tabella o la vista. L'utente deve essere un membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti del database db_ddladmin e db_owner.
Esempi
Nell'esempio seguente viene illustrata la sintassi per la creazione di un indice XML selettivo. Vengono inoltre mostrate diverse varianti della sintassi per la descrizione dei percorsi che si desidera indicizzare, con hint di ottimizzazione facoltativi.
CREATE SELECTIVE XML INDEX sxi_index
ON Tbl(xmlcol)
FOR(
pathab = '/a/b' as XQUERY 'node()'
pathabc = '/a/b/c' as XQUERY 'xs:double',
pathdtext = '/a/b/d/text()' as XQUERY 'xs:string' MAXLENGTH(200) SINGLETON
pathabe = '/a/b/e' as SQL NVARCHAR(100)
)
Nell'esempio seguente è inclusa una clausola WITH XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('http://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' )
Vedere anche
Concetti
Creare, modificare o eliminare indici XML selettivi
Specificare percorsi e hint di ottimizzazione per indici XML selettivi