CREATE SELECTIVE XML INDEX
Erstellt in der angegebenen Tabelle und XML-Spalte einen neuen selektiven XML-Index.
Selektive XML-Indizes verbessern die Leistung von XML-Indizierung und -Abfrage, da lediglich die Teilmenge der Knoten indiziert wird, die Sie in der Regel abfragen.
Weitere Informationen finden Sie in folgenden Themen:
Sie können auch sekundäre selektive XML-Indizes erstellen. Weitere Informationen finden Sie unter Erstellen, Ändern und Löschen sekundärer, selektiver XML-Indizes.
Transact-SQL-Syntaxkonventionen
Syntax
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
)
Argumente
CREATE-Klausel
- index_name
Der Name des neu zu erstellenden Indexes. Indexnamen müssen für eine Tabelle eindeutig sein, können aber innerhalb einer Datenbank mehrfach vorkommen. Indexnamen müssen den Regeln für Bezeichner entsprechen.
Beispiel: CREATE SELECTIVE XML INDEX sxi_index
ON-Klausel
<table_object>
Die Tabelle, die die zu indizierende XML-Spalte enthält. Verwenden Sie eines der folgenden Formate:database_name.schema_name.table_name
database_name..table_name
schema_name.table_name
table_name
xml_column_name
Der Name der XML-Spalte, die die zu indizierenden Pfade enthält.
Beispiel: ON Tbl(xmlcol)
WITH XMLNAMESPACES-Klausel
- <xmlnamespace_list>
Die Liste der von den zu indizierenden Pfaden verwendeten Namespaces. Weitere Informationen zur Syntax der WITH XMLNAMESPACES-Klausel finden Sie unter WITH XMLNAMESPACES (Transact-SQL).
Beispiel: WITH XMLNAMESPACES ('http://www.tempuri.org/' as myns)
FOR-Klausel
- <promoted_node_path_list>
Die Liste der zu indizierenden Pfade mit optionalen Optimierungshinweisen. Informationen zu den Pfaden und den Optimierungshinweisen, die Sie in der CREATE- oder der ALTER-Anweisung angeben können, finden Sie unter Angeben von Pfaden und Optimierungshinweisen für selektive XML-Indizes.
Beispiel:
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)
)
WITH-Klausel
- <index_options>
Informationen zu den Indexoptionen finden Sie unter CREATE XML INDEX (selektive XML-Indizes).
Bewährte Methoden
Erstellen Sie im Hinblick auf eine bessere Leistung und einen effizienteren Speicher in den meisten Fällen einen selektiven XML-Index anstatt eines gewöhnlichen XML-Indexes. Ein selektiver XML-Index wird jedoch nicht empfohlen, wenn eine der beiden folgenden Bedingungen gilt:
Sie müssen eine große Anzahl an Knotenpfaden zuordnen.
Sie müssen Abfragen von unbekannten Elementen oder Elementen an einem unbekannten Speicherort unterstützen.
Einschränkungen
Informationen über Begrenzungen und Einschränkungen finden Sie unter Selektive XML-Indizes (SXI).
Sicherheit
Berechtigungen
Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht. Der Benutzer muss ein Mitglied der festen Serverrolle sysadmin bzw. der festen Datenbankrollen db_ddladmin und db_owner sein.
Beispiele
Im folgenden Beispiel wird die Syntax zum Erstellen eines selektiven XML-Indexes veranschaulicht. Zudem werden mehrere Variationen der Syntax zum Beschreiben der zu indizierenden Pfade mit optionalen Optimierungshinweisen angegeben.
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)
)
Das folgende Beispiel enthält eine WITH XMLNAMESPACES-Klausel.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('http://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' )
Siehe auch
Konzepte
Erstellen, Ändern und Löschen selektiver XML-Indizes
Angeben von Pfaden und Optimierungshinweisen für selektive XML-Indizes