Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Tworzy nowy selektywny indeks XML na określonej tabeli i kolumnie XML. Selektywne indeksy XML poprawiają wydajność indeksowania i zapytań XML, indeksując tylko podzbiór węzłów, które zazwyczaj zapytujesz. Możesz także tworzyć drugorzędne selektywne indeksy XML. Informacje można znaleźć w artykule Create, Alter, and Drop Secondary Selective XML Indexes.
Transact-SQL konwencje składni
Składnia
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
To nazwa nowego indeksu do utworzenia. Nazwy indeksów muszą być unikalne w tabeli, ale nie muszą być unikalne w bazie danych. Nazwy indeksów muszą być zgodne z regułami identyfikatorów.
<table_object> To tabela zawierająca kolumnę XML do indeksowania. Użyj jednego z następujących formatów:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
xml_column_name
To nazwa kolumny XML zawierającej ścieżki do indeksowania.
[WITH XMLNAMESPACES (<xmlnamespace_list>)] To lista przestrzeni nazw używanych przez ścieżki do indeksowania. Aby uzyskać informacje o składni klauzuli WITH XMLNAMESPACES, zobacz WITH XMLNAMESPACES (Transact-SQL).
FOR (<promoted_node_path_list>) To lista ścieżek do indeksowania z opcjonalnymi wskazówkami optymalizacyjnymi. Aby uzyskać informacje o ścieżkach i wskazówkach optymalizacyjnych, które można określić w instrukcjach CREATE lub ALTER, zobacz Określ ścieżki i wskazówki optymalizacyjne dla selektywnych indeksów XML.
Z <index_options> Informacje o opcjach indeksu można znaleźć w artykule CREATE XML INDEX (Selective XML Indexes).
Najlepsze praktyki
Tworzenie selektywnego indeksu XML zamiast zwykłego indeksu XML w większości przypadków w celu uzyskania lepszej wydajności i bardziej wydajnego magazynu. Jednak selektywny indeks XML nie jest zalecany, gdy spełnione są następujące warunki:
Musisz mapować dużą liczbę ścieżek węzłów.
Musisz wspierać zapytania dotyczące nieznanych elementów lub elementów znajdujących się w nieznanej lokalizacji.
Ograniczenia i ograniczenia
Informacje o ograniczeniach i ograniczeniach można znaleźć w artykule Selective XML Indexes (SXI).
Zabezpieczenia
Permissions
Wymaga uprawnienia ALTER w tabeli lub widoku. Użytkownik musi być członkiem stałej roli serwera sysadmin lub członkiem stałych ról bazy danych db_ddladmin i db_owner.
Przykłady
Poniższy przykład przedstawia składnię tworzenia selektywnego indeksu XML. Przedstawiono również kilka odmian składni opisujących ścieżki, które mają być indeksowane, z opcjonalnymi wskazówkami optymalizacji.
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)
);
Poniższy przykład zawiera klauzulę WITH XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
Zobacz też
Selektywnych Indeksów XML (SXI)
tworzenie, modyfikowanie i usuwanie selektywnych indeksów XML
Określ ścieżki i wskazówki optymalizacyjne dla selektywnych indeksów XML