Está en la página 1de 15

4.3.

Índices,
reorganización y
reconstrucción
4.3. Índices,
reorganización y
reconstrucción
El índice de una base de datos es una estructura
alternativa de los datos en una tabla. El propósito
de los índices es acelerar el acceso a los datos
mediante operaciones físicas más rápidas y
efectivas.

En pocas palabras, se mejoran las operaciones


gracias a un aumento de la velocidad, permitiendo
un rápido acceso a los registros de una tabla en
una base de datos. Al aumentar drásticamente la
velocidad de acceso, se suelen usar sobre aquellos
campos sobre los cuáles se hacen búsquedas
frecuentes.
4.3. Índices,
reorganización y
reconstrucción
Un índice es una estructura opcional, asociado
con una mesa o tabla de clúster, que a veces
puede acelerar el acceso de datos.

Mediante la creación de un índice en una o


varias columnas de una tabla, se obtiene la
capacidad en algunos casos, para recuperar un
pequeño conjunto de filas distribuidas al azar
de la tabla. Los índices son una de las muchas
formas de reducir el disco I / O.
4.3. Índices,
reorganización y
reconstrucción
Un índice (o KEY, o INDEX) es un grupo de
datos que MySQL asocia con una o varias
columnas de la tabla. En este grupo de datos
aparece la relación entre el contenido y el
número de fila donde está ubicado.

Los índices (como los índices de los libros)


sirven para agilizar las consultas a las tablas,
evitando que MySQL tenga que revisar todos
los datos disponibles para devolver el
resultado.
Creación de indices
Podemos crear el índice a la vez que creamos la tabla,
usando la palabra INDEX seguida del nombre del índice a
crear y columnas a indexar (que pueden ser varias):

INDEX nombre_indice (columna_indexada,


columna_indexada2...)

La sintaxis es ligeramente distinta según la clase de


índice:

PRIMARY KEY (nombre_columna_1 [,nombre_columna2...])


UNIQUE INDEX nombre_index (columna_indexada1
[,columna_indexada2 ...]) INDEX nombre_index
(columna_indexada1 [,columna_indexada2...])
4.3. Índices,
reorganización y
reconstrucción
Podemos también añadirlos a una tabla
después de creada:

ALTER TABLE nombre_tabla ADD INDEX


nombre_indice (columna_indexada);

Si queremos eliminar un índice:

ALTER TABLE tabla_nombre DROP INDEX


nombre_indice
Uso de indices
Los índices permiten mayor rapidez en la
ejecución de las consultas a la base de datos
tipo SELECT ... WHERE.

La regla básica es pues crear tus índices sobre


aquellas columnas que vayas a usar con una
cláusula WHERE, y no crearlos con aquellas
columnas que vayan a ser objeto de un SELECT:

SELECT texto from tabla_libros WHERE autor =


Vazquez;
Uso de indices
En este ejemplo, la de autor es una columna
buena candidata a un índice; la de texto, no.

Otra regla básica es que son mejores


candidatas a indexar aquellas columnas que
presentan muchos valores distintos, mientras
que no son buenas candidatas las que tienen
muchos valores idénticos, como por ejemplo
sexo (masculino y femenino) porque cada
consulta implicará siempre recorrer
prácticamente la mitad del índice.
Uso de indices
En este ejemplo, la de autor es una columna
buena candidata a un índice; la de texto, no.

Otra regla básica es que son mejores


candidatas a indexar aquellas columnas que
presentan muchos valores distintos, mientras
que no son buenas candidatas las que tienen
muchos valores idénticos, como por ejemplo
sexo (masculino y femenino) porque cada
consulta implicará siempre recorrer
prácticamente la mitad del índice.
Reorganizacion de indices
Puede reorganizar o volver a generar un
índice fragmentado en Mysql ya que
mantiene los índices automáticamente cada
vez que se realizan operaciones de
inserción, actualización o eliminación en los
datos subyacentes. Con el tiempo, estas
modificaciones pueden hacer que la
información del índice se disperse por la
base de datos (se fragmente).
Reorganizacion de indices
La fragmentación ocurre cuando los índices
tienen páginas en las que la ordenación
lógica, basada en el valor de clave, no
coincide con la ordenación física dentro del
archivo de datos. Los índices muy
fragmentados pueden reducir el
rendimiento de la consulta y ralentizar la
respuesta de la aplicación.
Reorganizacion de indices
Puede solucionar la fragmentación del
índice reorganizándolo o volviéndolo a
generar. Para los índices con particiones
generados en un esquema de partición,
puede usar cualquiera de estos métodos en
un índice completo o en una sola partición
de un índice. El proceso de volver a generar
un índice quita y vuelve a crear el índice. 
Reconstrucción de indices
La reorganización de un índice emplea muy
pocos recursos del sistema. Desfragmenta el
nivel hoja de los índices clúster y no clúster
de las tablas y las vistas reordenando
físicamente las páginas de nivel hoja para
que coincidan con el orden lógico de los
nodos hoja, de izquierda a derecha. 

La reorganización también compacta las


páginas de índice. La compactación se basa
en el valor de factor de relleno existente.
Reconstrucción de indices
La regeneración de un índice se puede
ejecutar en línea o sin conexión. La
reorganización de un índice siempre se
ejecuta en línea. Para lograr una
disponibilidad similar a la opción de
reorganización, debe volver a generar los
índices en línea.
Reconstrucción de indices
La regeneración de un índice se puede
ejecutar en línea o sin conexión. La
reorganización de un índice siempre se
ejecuta en línea. Para lograr una
disponibilidad similar a la opción de
reorganización, debe volver a generar los
índices en línea.