Índices de agrupación en clúster
Un índice de agrupación en clúster determina cómo se ordenan físicamente (agrupan en clúster) las filas en un espacio de tablas. Los índices de agrupación en clúster proporcionan ventajas de rendimiento significativas en algunas operaciones, en especial en las que implican muchos registros. Las operaciones de agrupación, las operaciones de ordenación y las comparaciones que no sean iguales son ejemplos de operaciones que aprovechan las ventajas de los índices de agrupación en clúster.
Cualquier índice, a excepción de un índice basado en una expresión o un índice XML, puede ser un índice de agrupación en clúster. Tan solo puede definir un índice de agrupación en clúster en una tabla.
Puede definir un índice de agrupación en clúster en un espacio de tablas particionado o en un espacio de tablas segmentado. En un espacio de tablas particionado, un índice de agrupación en clúster puede ser un índice de particionamiento o un índice secundario. Si un índice de clúster en una tabla particionada no es un índice de particionamiento, las filas se ordenan en la secuencia de clúster en cada partición de datos en lugar de dividirse entre las particiones. (Antes de la versión 8 de la UDB de Db2 para z/OS®, el índice de partición debía ser el índice de agrupación)
Cuando una tabla tiene un índice de agrupación en clúster, una sentencia INSERT hace que Db2 inserte los registros lo más cerca posible en el orden de sus valores de índice. El primer índice que se define en la tabla sirve implícitamente como índice de agrupación en clúster a menos que el usuario especifique explícitamente CLUSTER al crear o modificar otro índice. Por ejemplo, si primero define un índice único en la columna EMPNO de la tabla EMP, Db2 inserta filas en la tabla EMP en el orden del número de identificación del empleado, a menos que defina explícitamente otro índice como índice de agrupación.
Aunque una tabla puede tener varios índices, sólo un índice puede ser un índice de agrupación en clúster. Si no define un índice de agrupación en clúster para una tabla, Db2 reconoce el primer índice que se crea en la tabla como el índice de clúster implícito cuando ordena filas de datos.
- Defina siempre un índice de agrupación en clúster. De lo contrario, es posible que Db2 no elija la clave que prefiera para el índice.
- Defina la secuencia de un índice de agrupación en clúster para dar soporte al proceso de un gran volumen de datos.
Utilice la cláusula CLUSTER de la sentencia CREATE INDEX o ALTER INDEX para definir un índice de agrupación en clúster.
Ejemplo
CREATE INDEX DEPT_IX
ON EMP
(DEPTNO ASC)
CLUSTER;Como resultado, probablemente todas las filas para el mismo departamento estarán cerca. Db2 puede acceder generalmente a todas las filas de ese departamento en una sola lectura. (La utilización de un índice de agrupación en clúster no garantiza que todas las filas para el mismo departamento se almacenen en la misma página. El almacenamiento real de las filas depende del tamaño de las filas, del número de filas y de la cantidad de espacio libre disponible. Asimismo algunas páginas pueden contener filas para más de un departamento.)
La figura siguiente muestra un índice de agrupación en clúster en la columna DEPT de la tabla EMP; sólo se muestra un subconjunto de las filas.
Suponga que posteriormente crea un índice de agrupación en clúster en la misma tabla. En este caso, Db2 lo identifica como el índice de agrupación en clúster pero no reorganiza los datos que ya están en la tabla. La organización de los datos permanece tal como estaba con el índice sin agrupación en clúster original creado. Sin embargo, cuando el programa de utilidad REORG reorganiza el espacio de tabla, Db2 agrupa los datos de acuerdo con la secuencia del nuevo índice de agrupación en clúster. Por lo tanto, si sabe que desea un índice de agrupación en clúster, debe definir el índice de agrupación en clúster antes de cargar la tabla. Si esto no es posible, debe definir el índice y a continuación reorganizar la tabla. Si crea o descarta y vuelve a crear un índice de agrupación en clúster después de cargar la tabla, los cambios entran en vigor después de una reorganización posterior.