Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Skapar ett nytt selektivt XML-index på den angivna tabellen och XML-kolumnen. Selektiva XML-index förbättrar prestandan för XML-indexering och frågeställande genom att indexera endast den delmängd av noder som du vanligtvis frågar i. Du kan också skapa sekundära selektiva XML-index. För information, se Skapa, ändra och ta bort sekundära selektiva XML-index.
Transact-SQL syntaxkonventioner
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.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
Är namnet på det nya indexet att skapa. Indexnamn måste vara unika inom en tabell, men behöver inte vara unika i en databas. Indexnamn måste följa reglerna för identifierare.
<table_object> Är tabellen som innehåller XML-kolumnen att indexera. Använd ett av följande format:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
xml_column_name
Är namnet på XML-kolumnen som innehåller sökvägarna till indexering.
[MED XMLNAMNRYMDER (<xmlnamespace_list>)] Är listan över namnrymder som används av sökvägarna för indexering. För information om syntaxen i WITH XMLNAMESPACES-satsen, se WITH XMLNAMESPACES (Transact-SQL).
FOR (<promoted_node_path_list>) Är listan över vägar att indexera med valfria optimeringstips. För information om vägar och optimeringstips som du kan specificera i CREATE- eller ALTER-satsen, se Specificera vägar och optimeringstips för selektiva XML-index.
MED <index_options> För information om indexalternativen, se SKAPA XML-INDEX (Selektiva XML-index).
Metodtips
Skapa ett selektivt XML-index i stället för ett vanligt XML-index i de flesta fall för bättre prestanda och effektivare lagring. Ett selektivt XML-index rekommenderas dock inte när någon av följande villkor är uppfyllda:
Du behöver kartlägga ett stort antal nodvägar.
Du behöver stödja frågor för okända element eller element på en okänd plats.
Begränsningar och restriktioner
För information om begränsningar och begränsningar, se Selektiva XML-index (SXI).
Security
Permissions
Kräver ALTER-behörighet för tabellen eller vyn. Användaren måste vara medlem i sysadmin fast serverroll eller db_ddladmin och db_owner fasta databasroller.
Examples
I följande exempel visas syntaxen för att skapa ett selektivt XML-index. Den visar också flera varianter av syntaxen för att beskriva sökvägarna som ska indexeras, med valfria optimeringstips.
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)
);
Följande exempel inkluderar en klausul MED XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
Se även
Selektiva XML-index (SXI)
skapa, ändra och ta bort selektiva XML-index
Specificera vägar och optimeringstips för selektiva XML-index