Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Belirlenen tablo ve XML sütununda yeni bir seçici XML indeksi oluşturur. Seçici XML indeksleri, genellikle sorguladığınız düğümlerin alt kümesini indeksleyerek XML indeksleme ve sorgulama performansını artırır. Ayrıca ikincil seçici XML indeksleri de oluşturabilirsiniz. Bilgi için bkz. İkincil Seçici XML İndeksleri Oluştur, Değiştir ve Bırak.
Transact-SQL söz dizimi kuralları
Sözdizimi
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
Oluşturulacak yeni indeksin adı. Indeks isimleri bir tablo içinde benzersiz olmalıdır, ancak veritabanı içinde benzersiz olmak zorunda değildir. Dizin adları tanımlayıcıların kurallarına uymalıdır.
<table_object> Indekslemek için XML sütununu içeren tablodur. Aşağıdaki formatlardan birini kullanın:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
xml_column_name
Indeksleme yollarını içeren XML sütununun adıdır.
[WITH XMLNAMESPACES (<xmlnamespace_list>)] Indeksleme yollarının kullandığı isim alanlarının listesidir. WITH XMLNAMESPACES cümlesinin sözdizimi hakkında bilgi için bkz. WITH XMLNAMESPACES (Transact-SQL) bölüm.
FOR (<promoted_node_path_list>) Isteğe bağlı optimizasyon ipuçları içeren indeksleme yollarının listesidir. CREATE veya ALTER ifadesinde belirtebileceğiniz yollar ve optimizasyon ipuçları hakkında bilgi için Seçici XML İndeksleri için Yolları Belirt ve Optimizasyon İpuçları bölümünü inceleyebilirsiniz.
WITH <index_options> Indeks seçenekleri hakkında bilgi için bkz. CREATE XML INDEX (Selective XML Indexes)
En İyi Yöntemler
Daha iyi performans ve daha verimli depolama için çoğu durumda sıradan bir XML dizini yerine seçmeli XML dizini oluşturun. Ancak, aşağıdaki koşullardan biri geçerli olduğunda seçici bir XML indeksi önerilmez:
Çok sayıda düğüm yolunu haritalamanız gerekiyor.
Bilinmeyen öğeler veya bilinmeyen bir konumdaki öğeler için sorguları desteklemeniz gerekir.
Sınırlamalar ve Kısıtlamalar
Sınırlamalar ve kısıtlamalar hakkında bilgi için bkz. Seçici XML İndeksleri (SXI)'ya bakınız.
Security
Permissions
ALTER izni, tablo veya görünüm üzerinde gereklidir. Kullanıcının sysadmin sabit sunucu rolünün veya db_ddladmin ve db_owner sabit veritabanı rollerinin üyesi olması gerekir.
Örnekler
Aşağıdaki örnek, seçmeli XML dizini oluşturmaya yönelik söz dizimini gösterir. Ayrıca dizine eklenecek yolları açıklamaya yönelik söz diziminin çeşitli varyasyonlarını ve isteğe bağlı iyileştirme ipuçlarını gösterir.
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şağıdaki örnek, WITH XMLNAMESPACES cümlesi içerir.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
Ayrıca Bkz.
Seçmeli XML Dizinleri (SXI)
Seçmeli XML Dizinlerini Oluşturma, Değiştirme ve Bırakma
Seçici XML İndeksleri için Yollar ve Optimizasyon İpuçları Belirtin