de Martin LE TARNEC

Los nodos hojas de un índice


El propósito de un índice es proveer una representación ordenada de los datos. Sin embargo, no es posible almacenar los datos de forma secuencial porque una sentencia insert generaría el movimiento de los datos presentes para hacer espacio a los nuevos. Mover grandes cantidades de datos consume mucho tiempo, y eso provocaría lentitud durante la ejecución de la sentencia insert. La solución es establecer un orden lógico, que es independiente del orden físico en memoria.

El orden lógico se crea a través de la lista doblemente enlazada. Cada nodo tiene un puntero hacia sus dos nodos vecinos, parecido a una cadena. Los nuevos nodos se agregan entre dos nodos existentes, que actualizan su puntero haciendo referencia al nuevo nodo. La ubicación física de los nuevos nodos no importa debido a que la lista doblemente enlazada mantiene el orden lógico.

Esta estructura se domina una lista doblemente enlazada , porque cada nodo hace referencia al anterior y al siguiente nodo. De este modo, la base de datos puede leer el índice hacia delante o hacia atrás según sea necesario. Es posible insertar un nuevo nodo sin mover grandes cantidades de datos, solo se actualizarían los punteros.

Las listas doblemente enlazadas son también usadas por las colecciones (contenedores) en muchos lenguajes de programación.

Lenguaje de programaciónNombre
Javajava.util.LinkedList
.NET FrameworkSystem.Collections.Generic.LinkedList
C++std::list

Las bases de datos utilizan las listas doblemente enlazadas para conectar los nodos hojas. Cada nodo hoja está almacenado dentro de un bloque de la base de datos (también llamado página); esta es la unidad de almacenamiento más pequeña. Todos los bloques de índices tienen el mismo tamaño, generalmente unos kilobytes. La base de datos usa el espacio de cada bloque lo mejor que puede y almacena el mayor número posible de registros en cada bloque. Eso significa que el orden del índice se mantiene sobre dos niveles diferentes: los registros del índice dentro de cada nodo hoja y los nodos hojas entre ellos mismos usando la lista doblemente enlazada.

Figura 1.1 Nodo hoja del índice y datos de la tabla

1113183CAFF3916FB22127272C500F1B52553435390D1E4453245DAA34271529AX39212752A1116AX35278332AA18133764Nodos hojas del índice(ordenado)Tabla(no ordenado)columna 2ROWIDcolumna 1columna 2columna 3columna 4

Figura 1.1 ilustra los nodos hojas del índice y su conexión con la tabla de datos. Cada registro del índice consiste en las columnas indexadas (la llave, la columna 2) y hace referencia a su registro correspondiente dentro de la tabla (a través del ROWID o RID). A diferencia del índice, los datos de la tabla están almacenados en una estructura llamada heap que no está ordenada. No existe ninguna relación entre los registros almacenados en el mismo bloque de la tabla, ni existen conexiones entre los bloques.

Si te gusta mi manera de explicar, te encantará mi libro.

Previous pageNext page

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

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 »

Entrar en contacto con Markus

Suscríbete a listas de correoRSS FeedMarkus Winand en LinkedInMarkus Winand en XINGMarkus Winand en TwitterMarkus Winand en Bluesky
Copyright 2017-2025 Martin LE TARNEC, Markus Winand. All righs reserved.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacidad y RGPD