CREATE SELECTIVE XML INDEX
Cria um novo índice XML seletivo na tabela especificada e na coluna XML.
Os índices XML seletivos melhoram o desempenho da indexação e consulta XML indexando somente o subconjunto de nós normalmente consultado.
Para obter mais informações, consulte os tópicos a seguir:
Também é possível criar índices XML seletivos secundários. Para obter informações, consulte Criar, alterar e remover índices XML seletivos secundários.
Convenções da sintaxe Transact-SQL
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 ] . | schema_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
)
Argumentos
cláusula CREATE
- index_name
Nome do novo índice a ser criado. Os nomes de índice devem ser exclusivos em uma tabela, mas não precisam ser exclusivos em um banco de dados. Os nomes de índice devem seguir as regras de identificadores.
Por exemplo: CREATE SELECTIVE XML INDEX sxi_index
Cláusula ON
<table_object>
Tabela que contém a coluna XML a ser indexada. Use um destes formatos:database_name.schema_name.table_name
database_name..table_name
schema_name.table_name
table_name
xml_column_name
Nome da coluna XML que contém os caminhos a serem indexados.
Por exemplo: ON Tbl(xmlcol)
cláusula WITH XMLNAMESPACES
- <xmlnamespace_list>
Lista de namespaces usados pelos caminhos a serem indexados. Para obter informações sobre a sintaxe da cláusula WITH XMLNAMESPACES, consulte WITH XMLNAMESPACES (Transact-SQL).
Por exemplo: WITH XMLNAMESPACES ('http://www.tempuri.org/' as myns)
cláusula FOR
- <promoted_node_path_list>
Lista de caminhos a serem indexados com dicas de otimização opcionais. Para obter informações sobre os caminhos e as dicas de otimização que podem ser especificados na instrução CREATE ou ALTER, consulte Especificar caminhos e dicas de otimização para índices XML seletivos.
Por exemplo:
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)
)
cláusula WITH
- <index_options>
Para obter informações sobre as opções de índice, consulte CREATE XML INDEX (índices XML seletivos).
Práticas recomendadas
Na maioria das vezes, crie um índice XML seletivo, em vez de um índice XML comum, para obter melhor desempenho e um armazenamento mais eficiente. Entretanto, um índice XML seletivo não é recomendado quando uma das seguintes condições é verdadeira:
É necessário mapear um grande número de caminhos do nó.
É necessário dar suporte a consultas de elementos desconhecidos ou elementos em um local desconhecido.
Limitações e restrições
Para obter informações sobre limitações e restrições, consulte SXI (índices XML seletivos).
Segurança
Permissões
Requer a 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 fixas db_ddladmin e db_owner.
Exemplos
O exemplo a seguir mostra a sintaxe para criar um índice XML seletivo. Ele também mostra variações da sintaxe para descrever os caminhos a serem indexados, com dicas de otimização opcionais.
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 a seguir inclui uma cláusula WITH XMLNAMESPACES.
CREATE SELECTIVE XML INDEX on T1(C1)
WITH XMLNAMESPACES ('http://www.tempuri.org/' as myns)
FOR ( path1 = '/myns:book/myns:author/text()' )
Consulte também
Conceitos
Criar, alterar e remover índices XML seletivos
Especificar caminhos e dicas de otimização para índices XML seletivos