CREATE SELECTIVE XML INDEX
Crea un nuevo índice XML selectivo en la tabla y la columna XML especificadas.
Los índices XML selectivos mejoran el rendimiento de la indización y las consultas XML al indizar únicamente el subconjunto de nodos que se suele consultar.
Para obtener más información, vea los siguientes temas:
También puede crear índices XML selectivos secundarios. Para obtener información, vea Crear, modificar y quitar índices XML selectivos secundarios.
Convenciones de sintaxis de Transact-SQL
Sintaxis
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
Es el nombre del nuevo índice que se va a crear. Los nombres de índice deben ser únicos en una tabla, pero no es necesario que sean únicos en una base de datos. Los nombres de índice deben seguir las reglas de los identificadores.
Por ejemplo: CREATE SELECTIVE XML INDEX sxi_index
Cláusula ON
<table_object>
Es la tabla que contiene la columna XML que se va a indizar. Use uno de los formatos siguientes:database_name.schema_name.table_name
database_name..table_name
schema_name.table_name
table_name
xml_column_name
Es el nombre de la columna XML que contiene las rutas de acceso que se van a indizar.
Por ejemplo: ON Tbl(xmlcol)
WITH XMLNAMESPACES, cláusula
- <xmlnamespace_list>
Es la lista de espacios de nombres usados por las rutas de acceso que se van a indizar. Para obtener información acerca de la sintaxis de la cláusula WITH XMLNAMESPACES, vea WITH XMLNAMESPACES (Transact-SQL).
Por ejemplo: WITH XMLNAMESPACES ('http://www.tempuri.org/' as myns)
Cláusula FOR
- <promoted_node_path_list>
Es la lista de rutas de acceso que se va a indizar con sugerencias opcionales de optimización. Para obtener información acerca de las rutas de acceso y las sugerencias de optimización que puede especificar en la instrucción CREATE o ALTER, vea Especificar rutas de acceso y sugerencias de optimización para índices XML selectivos.
Por ejemplo:
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 obtener información sobre las opciones de índice, vea CREATE XML INDEX (índices XML selectivos).
Prácticas recomendadas
Cree un índice XML selectivo en lugar de un índice XML normal en la mayoría de los casos para mejorar el rendimiento y lograr un almacenamiento más eficiente. Sin embargo, no se recomienda usar un índice XML selectivo cuando alguna de las condiciones siguientes sea verdadera:
Necesita asignar un gran número de rutas de acceso del nodo.
Necesita admitir consultas para elementos desconocidos o elementos de una ubicación desconocida.
Limitaciones y restricciones
Para obtener información acerca de las limitaciones y restricciones, vea Índices XML selectivos (SXI).
Seguridad
Permisos
Se necesita el permiso ALTER en la tabla o la vista. El usuario debe ser miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_ddladmin y db_owner.
Ejemplos
En el ejemplo siguiente se muestra la sintaxis para crear un índice XML selectivo. También se muestran varias variaciones de la sintaxis para describir las rutas de acceso que se van a indizar, con sugerencias opcionales de optimización.
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)
)
El ejemplo siguiente incluye una 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()' )
Vea también
Conceptos
Crear, modificar y quitar índices XML selectivos
Especificar rutas de acceso y sugerencias de optimización para índices XML selectivos