ARTICULO: Nuevas mejoras de IBM Informix 11.70: Multi index scans

El Multi index scan, o escaneo múltiple de índices, es un nuevo algoritmo de acceso a tablas que optimiza varios aspectos de la búsqueda datos en situaciones específicas. La idea fundamental es que utiliza varios índices en lugar de índices compuestos para el acceso a los datos con cláusulas where, accediendo únicamente a los valores que satisfacen las condiciones y sin realizar escaneos secuenciales.

Para ver claramente la aplicación, supongamos el siguiente ejemplo. Disponemos de una tabla con índices en tres de sus columnas:

* index indice1 on tabla(col1)
* index indice2 on tabla(col2)
* index indice3 on tabla(col3)

Con el nuevo algoritmo Multi index scan es posible realizar un selects del tipo:

* select * from tabla1

where col1=10 and c2 between 10 and 20

* select * from tabla1

where col3=5 and c2 between 10 and 20

Esto mismo se puede realizar con índice compuestos, pero estos tienen la limitación de que la primera condición debe ser de igualdad para poder utilizar el índice, de forma que para poder realizar búsquedas sobre los tres índices anteriores sin el Multi index scan necesitamos definir 6 índices compuestos (col1, col2), (col1, col3), (col2,col1), (col2, col3), (col3, col1) y (col3, col2). Si el número de índices y de condiciones de búsqueda es elevado podemos suponer la enorme cantidad de espacio requerido para la creación de todos los índices compuestos necesarios. Sin embargo, las búsquedas sobre estos índices son más eficientes ya que requieren leer sólo un índice en lugar de varios.

Por tanto, la utilización de Multi index scan es útil para reducir el número de índices creados sobre una tabla y para permitir mayor flexibilidad a la hora de definir los predicados de las cláusulas where. Si no se dan este tipo de consultas es mejor continuar utilizando los índices compuestos que son más eficientes.

Además, el Multi index scan tiene algunas limitaciones de uso:

* No se puede utilizar si se utilizar nivel de aislamiento Cursor Stability ni si se utiliza la opción Commited Read con la opción LAST COMMITTED
* No se puede utilizar en tablas de catálogo, tablas jerárquicas, tablas externas o pseudo tablas

Para más información acerca de esta y otras funcionalidades de Informix 11.70 escribir a soporte@proyectosysoluciones.es

Proyectos y Soluciones
Proyectos y Soluciones
Artículos: 163