Atributos de índices XML
Puede crear un índice en una columna XML para una evaluación eficaz de las expresiones de XQuery para mejorar el rendimiento de las consultas en documentos XML.
En índices relacionales simples, las claves de índice están compuestas de una o más columnas de tabla especificadas. No obstante, un índice XML utiliza una expresión de patrón XML en concreto para vías de acceso de índice y valores en documentos XML almacenados en una única columna XML.
En un índice XML, en realidad tan solo se indexan los nodos de atributo, los nodos de texto o los nodos de elemento que coinciden con la expresión de patrón XML. Un índice XML sólo indexa los nodos que coinciden con el patrón XML específico y no con el propio documento. Dos campos de clave más se añaden al índice para formar la clave de índice compuesto. Los campos de clave extras, que identifican el documento XML y la posición del nodo en el documento, se almacenan en el catálogo. Estos campos no están implicados en la comprobación de exclusividad para índices exclusivos.
Utilice la sentencia CREATE INDEX con la palabra clave XMLPATTERN para crear un índice XML. También debe especificar la vía de acceso XML que debe indexarse. Se forma una clave de índice concatenando los valores extraídos de los nodos del documento XML que cumple la vía de acceso XML especificada con el ID de nodo y documento.
- VARCHAR
- DECFLOAT
- TIMESTAMP(12)
- FECHA
- IGNORE INVALID VALUES
- REJECT INVALID VALUES
Cuando indexa una columna XML con XMLPATTERN, tan solo se indexan las partes del documento que cumplen la expresión de patrón XML. Es posible que varias partes del documento cumplan el patrón XML especificado en el XMLPATTERN. Por lo tanto, es posible que más de una entrada de clave de índice se genere e inserte en el índice para la inserción de un documento único.
Sólo se permite una especificación de índice XML para cada sentencia CREATE INDEX. Sin embargo, puede crear un índice XML con varias claves o crear varios índices XML en una columna XML.
ejemplos
- Ejemplo 1
Supongamos que debemos buscar el apellido de un empleado específico (apellido) en los elementos del empleado. Puede utilizar la siguiente sentencia CREATE INDEX para crear un índice en la expresión de patrón XML
'/department/emp/name/last':CREATE INDEX EMPINDEX ON DEPARTMENT (DEPTDOCS) GENERATE KEYS USING XMLPATTERN '/department/emp/name/last' AS SQL VARCHAR(20)Una vez el índice EMPINDEX se ha creado satisfactoriamente, se rellenan varias entradas en las tablas de catálogo.
- Ejemplo 2
- Puede crear dos índices XML con la
misma expresión de patrón utilizando diferentes tipos de datos para cada
uno de ellos. Puede utilizar los diferentes índices para seleccionar cómo quiere interpretar el resultado de la expresión según varios tipos de datos. Por ejemplo, el valor '12345' tiene una representación
de tipo carácter pero también se puede interpretar como el número 12.345. Por ejemplo,
supongamos que quiere indexar la vía de acceso
'/department/emp/@id'tanto como cadena de caracteres como número. Debe crear dos índices, uno para el tipo de datos VARCHAR y uno para el tipo de datos DECFLOAT. Los valores del documento se convierten al tipo de datos especificado para cada índice.