Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Cria um novo índice seletivo XML na tabela e coluna XML especificadas. Índices XML seletivos melhoram o desempenho da indexação e consulta XML ao indexarem apenas o subconjunto de nós que normalmente consulta. Também pode criar índices XML seletivos secundários. Para informações, consulte Crear, Alterar e Eliminar Índices Seletivos XML Secundários.
Transact-SQL convenções de sintaxe
Sintaxe
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
É o nome do novo índice a criar. Os nomes dos índices devem ser únicos dentro de uma tabela, mas não têm de ser únicos dentro de uma base de dados. Os nomes dos índices devem seguir as regras dos identificadores.
<table_object> É a tabela que contém a coluna XML a indexar. Use um dos seguintes formatos:
database_name.schema_name.table_namedatabase_name..table_nameschema_name.table_nametable_name
xml_column_name
É o nome da coluna XML que contém os caminhos a indexar.
[COM XMLNAMESPACES (<xmlnamespace_list>)] É a lista de namespaces usados pelos caminhos para indexar. Para informações sobre a sintaxe da cláusula WITH XMLNAMESPACES, veja WITH XMLNAMESPACES (Transact-SQL).
FOR (<promoted_node_path_list>) é a lista de caminhos a indexar com dicas opcionais de otimização. Para informações sobre os caminhos e as dicas de otimização que pode especificar na instrução CREATE ou ALTER, consulte Especificar Caminhos e Dicas de Otimização para Índices XML Seletivos.
COM <index_options> Para informações sobre as opções de índice, consulte CREATE XML INDEX (Selective XML Indexes).
Melhores práticas
Crie um índice XML seletivo em vez de um índice XML comum, na maioria dos casos, para melhor desempenho e armazenamento mais eficiente. No entanto, um índice XML seletivo não é recomendado quando qualquer uma das seguintes condições é verdadeira:
Precisas de mapear um grande número de caminhos de nós.
É necessário suportar consultas para elementos desconhecidos ou elementos num local desconhecido.
Limitações e Restrições
Para informações sobre limitações e restrições, consulte Selective XML Indexes (SXI).
Segurança
Permissions
Requer permissão ALTER na tabela ou exibição. O usuário deve ser membro da função de servidor fixa sysadmin ou das funções de banco de dados db_ddladmin e db_owner fixas.
Examples
O exemplo seguinte mostra a sintaxe para criar um índice XML seletivo. Mostra também várias variações da sintaxe para descrever os caminhos a indexar, com dicas opcionais de otimização.
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)
);
O exemplo seguinte inclui uma cláusula WITH XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('https://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' );
Ver também
Índices XML seletivos (SXI)
Criar, alterar e descartar índices XML seletivos
Especificar Caminhos e Dicas de Otimização para Índices XML Seletivos