Megosztás a következőn keresztül:


CREATE SELECTIVE XML INDEX (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Új szelektív XML indexet hoz létre a megadott táblán és XML oszlopon. A szelektív XML indexek javítják az XML indexelés és lekérdezés teljesítményét azáltal, hogy csak azokat a csomópontokat indexelik, amelyeket általában lekérdezünk. Másodlagos szelektív XML indexeket is létrehozhatsz. További információért lásd: Másodlagos szelektív XML indexek létrehozása, módosítása és eldobása.

Transact-SQL szintaxis konvenciók

Szemantika

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
Az új index neve, amit létre kell hozni. Az indexneveknek egyedinek kell lenniük egy táblán belül, de nem kell egyedinek lenniük az adatbázison belül. Az indexneveknek az azonosítók szabályait kell követnie.

<table_object> Az a táblázat, amely tartalmazza az indexelt XML oszlopot. Használd az alábbi formátumok egyikét:

  • database_name.schema_name.table_name

  • database_name..table_name

  • schema_name.table_name

  • table_name

xml_column_name
Az XML oszlop neve, amely tartalmazza az indexhez vezető utakat.

[WITH XMLNAMESPACES (<xmlnamespace_list>)] Az indexelési útvonalak névtereinek listája. A WITH XMLNAMESPACES klauzula szintaxisáról információért lásd: WITH XMLNAMESPACES (Transact-SQL).

FOR (<promoted_node_path_list>) Az indexelt útvonalak listája, opcionális optimalizálási tippekkel. Az útvonalakról és az optimalizálási tippekről információért a CREATE vagy ALTER utasításban megadható információkért lásd: Path Specif, Optimization Hints for Selective XML Indexes.

WITH <index_options> Az index opciók információért lásd: CREATE XML INDEX (Selective XML Indexes).

Ajánlott eljárások

A jobb teljesítmény és a hatékonyabb tárolás érdekében a legtöbb esetben a szokásos XML-index helyett hozzon létre szelektív XML-indexet. Azonban a szelektív XML index nem ajánlott, ha az alábbi feltételek bármelyike igaz:

  • Sok csomóponti útvonalat kell leképezni.

  • Támogatnod kell az ismeretlen elemekre vagy ismeretlen helyen lévő elemekre vonatkozó lekérdezéseket.

Korlátozások és korlátozások

A korlátozásokról és korlátozásokról további információért lásd: Szelektív XML indexek (SXI).

Biztonság

Permissions

Módosítási engedély szükséges a táblához vagy a nézethez. A felhasználónak tagja kell lennie a sysadmin rögzített kiszolgálói szerepkörnek, illetve a db_ddladmin és db_owner rögzített adatbázis-szerepköröknek.

Példák

Az alábbi példa a szelektív XML-indexek létrehozásának szintaxisát mutatja be. Emellett az indexelendő útvonalak leírására szolgáló szintaxis több változatát is megjeleníti, opcionális optimalizálási tippekkel.

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)  
);  

A következő példa tartalmaz egy WITH XMLNAMESPACES záradékot.

CREATE SELECTIVE XML INDEX on T1(C1)  
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)  
FOR ( path1 = '/myns:book/myns:author/text()' );  

Lásd még:

szelektív XML-indexek (SXI)
Szelektív XML-indexek létrehozása, módosítása és elvetése
Jelöld meg az útvonalakat és optimalizálási tippeket szelektív XML indexekhez