“Un índice acelera la sentencia SQL” es una de las explicaciones más sencillas que he podido escuchar acerca de un índice. Y aunque es cierto que describe el aspecto más importante de un índice, no es -sin embargo- suficiente para este libro. Este capítulo describe la estructura de un índice de forma más profunda, pero sin perderse demasiado en detalles, lo que permitirá entender todos los aspectos de la optimización de sentencias SQL, que se explicarán a lo largo de este libro.
Un índice es una estructura diferente dentro de la base de datos;
creado con el comando create index
.
Requiere su propio espacio en disco y contiene una copia de los datos de la
tabla. Eso significa que un índice es una redundancia. Crear un índice no
cambia los datos de la tabla; solamente establece una nueva estructura de
datos que hace referencia a la tabla. De hecho, un índice de base de datos
se parece mucho a un índice de un libro: ocupa su propio espacio, es
redundante y hace referencia a la información actual almacenada en otro
lugar.
Buscar dentro de un índice de una base de datos es como buscar dentro de una guía telefónica. El concepto clave es que todos los datos estén ordenados según un orden bien definido. Encontrar datos dentro de un conjunto de datos ordenados es rápido y fácil debido a que el orden de clasificación determina la posición de cada dato.
Sin embargo, un índice de base de datos es más complejo que una guía
telefónica porque está siendo modificado de forma incesante. Actualizar una
guía impresa por cada cambio es casi imposible porque no existe espacio
suficiente entre cada información para agregar las nuevas. Una guía
telefónica evita este problema de actualizaciones acumulando los cambios en
sucesivas versiones impresas. Una base de datos no puede esperar tanto
tiempo; debe atender las sentencias insert
, delete
y
update
de inmediato, conservando el orden
del índice sin mover grandes cantidades de datos.
Para poder resolver este desafío, la base de datos combina dos estructuras: una lista doblemente enlazada y un árbol de búsqueda. Estas dos estructuras explican la mayor parte de las características de rendimiento de las bases de datos.
Si te gusta mi manera de explicar, te encantará mi libro.