Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Maakt een nieuwe selectieve XML-index aan op de opgegeven tabel en XML-kolom. Selectieve XML-indexen verbeteren de prestaties van XML-indexering en -query's door alleen de deelverzameling van knopen te indexeren die je doorgaans bevraagt. Je kunt ook secundaire selectieve XML-indexen aanmaken. Voor informatie, zie Aanmaken, Wijzigen en Verwijderen Secundaire Selectieve XML-indexen.
Transact-SQL syntaxis-conventies
Syntaxis
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.table_name | schema_name.table_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
)
Arguments
index_name
Is de naam van de nieuwe index die je moet aanmaken. Indexnamen moeten uniek zijn binnen een tabel, maar niet uniek binnen een database. Indexnamen moeten de regels van id's volgen.
<table_object> Is de tabel die de XML-kolom bevat om te indexeren. Gebruik een van de volgende formaten:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
xml_column_name
Is de naam van de XML-kolom die de paden naar indexering bevat.
[MET XMLNAMESPACES (<xmlnamespace_list>)] Is de lijst van namespaces die door de paden naar indexering worden gebruikt. Voor informatie over de syntaxis van de clausule WITH XMLNAMESPACES, zie WITH XMLNAMESPACES (Transact-SQL).
FOR (<promoted_node_path_list>) Is de lijst van paden die geïndexeerd moeten worden met optionele optimalisatiehints. Voor informatie over de paden en de optimalisatiehints die je kunt specificeren in de CREATE- of ALTER-instructie, zie Specificeer Paden en Optimalisatietips voor Selectieve XML-indexen.
MET <index_options> Voor informatie over de indexopties, zie CREATE XML INDEX (Selectieve XML-indexen).
Beste praktijken
Maak een selectieve XML-index in plaats van een gewone XML-index in de meeste gevallen voor betere prestaties en efficiëntere opslag. Een selectieve XML-index wordt echter niet aanbevolen wanneer een van de volgende voorwaarden waar is:
Je moet een groot aantal nodepaden in kaart brengen.
Je moet zoekopdrachten ondersteunen voor onbekende elementen of elementen op een onbekende locatie.
Beperkingen en beperkingen
Voor informatie over beperkingen en beperkingen, zie Selectieve XML-indexen (SXI).
Security
Permissions
Vereist ALTER-machtigingen voor de tabel of weergave. De gebruiker moet lid zijn van de sysadmin vaste serverfunctie of de db_ddladmin en db_owner vaste databaserollen.
Voorbeelden
In het volgende voorbeeld ziet u de syntaxis voor het maken van een selectieve XML-index. Er worden ook verschillende variaties van de syntaxis weergegeven voor het beschrijven van de paden die moeten worden geïndexeerd, met optionele optimalisatiehints.
CREATE TABLE Tbl ( id INT PRIMARY KEY, xmlcol XML );
GO
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)
);
Het volgende voorbeeld bevat een WITH XMLNAMESPACES-clausule.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
Zie ook
SXI- (Selectieve XML-indexen)
selectief XML-indexen maken, wijzigen en verwijderen
Specificeer paden en optimalisatietips voor selectieve XML-indexen