MEMBUAT INDEKS XML SELEKTIF (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Membuat indeks XML selektif baru pada tabel dan kolom XML yang ditentukan. Indeks XML selektif meningkatkan performa pengindeksan dan kueri XML dengan hanya mengindeks subset simpul yang biasanya Anda kueri. Anda juga dapat membuat indeks XML selektif sekunder. Untuk informasi, lihat Membuat, Mengubah, dan Menghilangkan Indeks XML Selektif Sekunder.
Sintaks
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
)
Argumen
index_name
Adalah nama indeks baru yang akan dibuat. Nama indeks harus unik dalam tabel, tetapi tidak harus unik dalam database. Nama indeks harus mengikuti aturan pengidentifikasi.
<> table_object Adalah tabel yang berisi kolom XML untuk diindeks. Gunakan salah satu format berikut:
database_name.schema_name.table_name
database_name..table_name
schema_name.table_name
table_name
xml_column_name
Adalah nama kolom XML yang berisi jalur untuk diindeks.
[DENGAN XMLNAMESPACES (<xmlnamespace_list>)] Adalah daftar namespace layanan yang digunakan oleh jalur untuk diindeks. Untuk informasi tentang sintaksis klausa WITH XMLNAMESPACES, lihat WITH XMLNAMESPACES (Transact-SQL).
FOR (<promoted_node_path_list>) Adalah daftar jalur untuk diindeks dengan petunjuk pengoptimalan opsional. Untuk informasi tentang jalur dan petunjuk pengoptimalan yang dapat Anda tentukan dalam pernyataan CREATE atau ALTER, lihat Menentukan Jalur dan Petunjuk Pengoptimalan untuk Indeks XML Selektif.
WITH <index_options> Untuk informasi tentang opsi indeks, lihat MEMBUAT INDEKS XML (Indeks XML Selektif).
Praktik Terbaik
Buat indeks XML selektif alih-alih indeks XML biasa dalam kebanyakan kasus untuk performa yang lebih baik dan penyimpanan yang lebih efisien. Namun, indeks XML selektif tidak disarankan ketika salah satu kondisi berikut ini benar:
Anda perlu memetakan sejumlah besar jalur simpul.
Anda perlu mendukung kueri untuk elemen atau elemen yang tidak diketahui di lokasi yang tidak diketahui.
Batasan dan Pembatasan
Untuk informasi tentang batasan dan pembatasan, lihat Indeks XML Selektif (SXI).
Keamanan
Izin
Memerlukan izin ALTER pada tabel atau tampilan. Pengguna harus menjadi anggota peran server tetap sysadmin atau peran database tetap db_ddladmin dan db_owner .
Contoh
Contoh berikut menunjukkan sintaks untuk membuat indeks XML selektif. Ini juga menunjukkan beberapa variasi sintaks untuk menjelaskan jalur yang akan diindeks, dengan petunjuk pengoptimalan opsional.
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)
);
Contoh berikut menyertakan klausa WITH XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
Lihat Juga
Indeks XML Selektif (SXI)
Membuat, Mengubah, dan Menghilangkan Indeks XML Selektif
Tentukan Jalur dan Petunjuk Pengoptimalan untuk Indeks XML Selektif