Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Vytváří nový selektivní XML index na zadanou tabulku a XML sloupec. Selektivní XML indexy zlepšují výkon XML indexování a dotazování tím, že indexují pouze podmnožinu uzlů, které obvykle dotazujete. Můžete také vytvářet sekundární selektivní XML indexy. Pro informace viz Vytváření, úprava a rušení sekundárních selektivních XML indexů.
Syntaxe
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
Je název nového indexu pro vytvoření. Názvy indexů musí být v tabulce jedinečné, ale nemusí být jedinečné v rámci databáze. Názvy indexů musí dodržovat pravidla identifikátorů .
<table_object> Je tabulka, která obsahuje sloupec XML pro index. Použijte jeden z následujících formátů:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
xml_column_name
Je název XML sloupce, který obsahuje cesty k indexování.
[S XMLNAMESPACES (<xmlnamespace_list>)] Je seznam jmenných prostorů používaných cestami k indexování. Pro informace o syntaxi klauzule WITH XMLNAMESPACES viz WITH XMLNAMESPACES (Transact-SQL).
FOR (<promoted_node_path_list>) Je seznam cest k indexování s volitelnými optimalizačními nápovědami. Pro informace o cestách a optimalizačních nápovědách, které můžete specifikovat v příkazu CREATE nebo ALTER, viz Specifikovat cesty a optimalizační hinty pro selektivní XML indexy.
S <index_options> Informace o možnostech indexu naleznete v článku CREATE XML INDEX (Selective XML Indexes).
Osvědčené postupy
Ve většině případů vytvořte selektivní index XML místo běžného indexu XML pro lepší výkon a efektivnější úložiště. Selektivní XML index se však nedoporučuje, pokud platí některá z následujících podmínek:
Musíte mapovat velké množství uzlových cest.
Musíte podporovat dotazy na neznámé prvky nebo prvky na neznámém místě.
Limitace a omezení
Pro informace o omezeních a omezeních viz Selective XML Indexes (SXI).
Zabezpečení
Povolení
Vyžaduje oprávnění ALTER v tabulce nebo zobrazení. Uživatel musí být členem pevné serverové role sysadmin nebo pevné databázové role db_ddladmin a db_owner.
Examples
Následující příklad ukazuje syntaxi pro vytvoření selektivního indexu XML. Zobrazuje také několik variant syntaxe pro popis cest, které se mají indexovat, s volitelnými pokyny pro optimalizaci.
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)
);
Následující příklad obsahuje klauzuli WITH XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
Viz také
selektivní indexy XML (SXI)
vytváření, změny a odstraňování selektivních indexů XML
Specifikujte cesty a optimalizační tipy pro selektivní XML indexy