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, “Agrupación de datos, 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, 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 es defensor del resurgimiento del SQL. Su misión es la de presentar a los desarrolladores la evolución de SQL en el siglo XXI. Es posible contratar a Markus según disponibilidad o como orador o consultor en winand.at.

Adquiere tu libro

Portada de “Rendimiento SQL explicado”: Ardilla corriendo en la hierba

La esencia del tuning de SQL en 200 páginas

Compra ahora
(libro de bolsillo y/o PDF)

Contratar a Markus

La manera más rápida y fácil de beneficiarse de su extenso conocimiento y experiencia.
Aprende más »

Do not use OFFSET for pagination

Learn why

Visita el sitio de nuestro colega!Mucho ha cambiado desde SQL-92

Use The Index, Luke! taza de café

Pegatinas, posavasos, libros y tazas de café. Todo lo que necesitas mientras aprendes.

Compre ahora

Entrar en contacto con Markus

Markus Winand en LinkedInMarkus Winand en XINGMarkus Winand en Twitter
“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 | Privacidad y RGPD | CC-BY-NC-ND 3.0 licencia