de Martin LE TARNEC.

Anatomía de un índice SQL


“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.

Índices agrupados (SQL Server, MySQL/InnoDB)

SQL Server y MySQL (usando InnoDB) tienen una definición más extensa de lo que es un “índice”. Hacen referencias a tablas que tienen una estructura como índice agrupado. Estas tablas se denominan tablas organizadas por índice (en inglés, “Index-Organized Tables” o IOT) en la base de datos Oracle.

El Capítulo 5, “Clustering Data, Agrupación de datos las describe con más detalles y explica sus ventajas e inconvenientes.

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 las cosas, te encantará mi libro.

Contenido

  1. Los nodos hojas — Una lista doblemente enlazada

  2. El B-Tree — Es un árbol balanceado

  3. Índices Lentos, Sección I — Dos ingredientes para hacer un índice lento

Previous pageNext page

Acerca del autor

Foto de Markus Winand

Markus Winand enseña eficientemente SQL, en casa y online. Minimiza el tiempo de desarrollo utilizando moderno SQL y optimiza el tiempo de ejecución con indexación inteligente. Para ello también ha publicado el libro SQL Performance Explained.

“Use The Index, Luke” de Markus Winand se halla bajo licencia Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacy | CC-BY-NC-ND 3.0 licencia