Gilberto 🦁 PRO
Desarrollo visualizaciones y aplicaciones en línea, colaboro con distintos medios digitales
En bases de datos, un índice es una tabla especial que se usa para agilizar los procesos de búsqueda y recuperación de datos
En un sentido técnico, son tablas que contienen apuntadores a la información guardada en una tabla
Aunque ocupan espacio en un disco duro, no son accesibles directamente para los usuarios
matricula | nombre | apellido |
---|---|---|
Miguel | ||
Carlos | ||
Alberto | ||
Juan | ||
Vicente | ||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel | ||
Carlos | ||
Alberto | ||
Juan | ||
Vicente | ||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel | ||
Carlos | ||
Alberto | ||
Juan | ||
Vicente | ||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel |
||
Carlos | ||
Alberto | ||
Juan | ||
Vicente | ||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel |
||
Carlos | ||
Alberto | ||
Juan | ||
Vicente | ||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel |
||
Carlos | ||
Alberto |
||
Juan | ||
Vicente | ||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel |
||
Carlos | ||
Alberto |
||
Juan |
||
Vicente | ||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel |
||
Carlos | ||
Alberto |
||
Juan |
||
Vicente |
||
Manuel | ||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel |
||
Carlos | ||
Alberto |
||
Juan |
||
Vicente |
||
Manuel |
||
Lucas | ||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel |
||
Carlos | ||
Alberto |
||
Juan |
||
Vicente |
||
Manuel |
||
Lucas |
||
Noé | ||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
La búsqueda en una columna no indexada se da registro a registro
matricula | nombre | apellido |
---|---|---|
Miguel | ||
Carlos | ||
Alberto | ||
Juan | ||
Vicente | ||
Manuel | ||
Lucas | ||
Noé |
||
Uriel |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
Hasta que encuentra lo que está buscando
matricula | nombre | apellido |
---|---|---|
Alberto | ||
Carlos | ||
Juan | ||
Lucas | ||
Manuel | ||
Miguel | ||
Noé | ||
Uriel | ||
Vicente |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
Imaginemos que la columna "nombre" estuviera ordenada alfabéticamente
matricula | nombre | apellido |
---|---|---|
Alberto | ||
Carlos | ||
Juan | ||
Lucas | ||
Manuel | ||
Miguel | ||
Noé | ||
Uriel | ||
Vicente |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
Imaginemos que la columna "nombre" estuviera ordenada alfabéticamente
matricula | nombre | apellido |
---|---|---|
Alberto | ||
Carlos | ||
Juan | ||
Lucas | ||
Manuel | ||
Miguel | ||
Noé | ||
Uriel | ||
Vicente |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
Imaginemos que la columna "nombre" estuviera ordenada alfabéticamente
matricula | nombre | apellido |
---|---|---|
Alberto | ||
Carlos | ||
Juan | ||
Lucas | ||
Manuel |
||
Miguel | ||
Noé | ||
Uriel | ||
Vicente |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
Imaginemos que la columna "nombre" estuviera ordenada alfabéticamente
matricula | nombre | apellido |
---|---|---|
Alberto | ||
Carlos | ||
Juan | ||
Lucas | ||
Manuel |
||
Miguel | ||
Noé | ||
Uriel | ||
Vicente |
SELECT
matricula, nombre, apellido
WHERE
nombre = "Uriel"
Bastaron 3 saltos para encontrar lo que se busca
matricula | nombre | apellido |
---|---|---|
3 | Miguel | |
5 | Carlos | |
12 | Alberto | |
6 | Juan | |
7 | Vicente | |
9 | Manuel | |
4 | Lucas | |
11 | Noé | |
8 | Uriel |
nombre | matricula |
---|---|
Alberto | 12 |
Carlos | 5 |
Juan | 6 |
Lucas | 4 |
Manuel | 9 |
Miguel | 3 |
Noé | 11 |
Uriel | 8 |
Vicente | 7 |
matricula | nombre | apellido |
---|---|---|
3 | Miguel | |
5 | Carlos | |
12 | Alberto | |
6 | Juan | |
7 | Vicente | |
9 | Manuel | |
4 | Lucas | |
11 | Noé | |
8 | Uriel |
nombre | matricula |
---|---|
Alberto | 12 |
Carlos | 5 |
Juan | 6 |
Lucas | 4 |
Manuel | 9 |
Miguel | 3 |
Noé | 11 |
Uriel | 8 |
Vicente | 7 |
El almacenamiento y la búsqueda de cualquier índice se hace mediante árboles - B
Hay dos tipos generales de índices:
Este tipo de índices se conforman, básicamente, con la clave primaria de una tabla y garantizan que esta clave se registre en orden ascendente y que corresponde a la forma física en que la tabla se almacena en el disco duro de una base de datos
Este tipo de índices son referencias ordenadas para un campo específico (o combinación de campos) que apuntan a las entradas de una tabla
matricula | nombre | apellido |
---|---|---|
3 | Miguel | |
4 | Lucas | |
5 | Carlos | |
6 | Juan | |
7 | Vicente | |
8 | Uriel | |
9 | Manuel | |
11 | Noé | |
12 | Alberto |
nombre | matricula |
---|---|
Alberto | 12 |
Carlos | 5 |
Juan | 6 |
Lucas | 4 |
Manuel | 9 |
Miguel | 3 |
Noé | 11 |
Uriel | 8 |
Vicente | 7 |
Este tipo de índices son referencias ordenadas para un campo específico (o combinación de campos) que apuntan a las entradas de una tabla
Cada tipo de índice puede usarse para una sola columna o para un conjunto de columnas
Los tipos de índices de uso más común son:
Dependiendo del SGDB puede haber otros tipos de índice de uso más especializado
CREATE INDEX
{nombre_del_indice}
ON
{nombre_de_la_tabla}
({columna_1}, {columna_2}, ..., {columna_n});
Se usan cuando tenemos consultas que hacen búsquedas o filtrados sobre la o las columnas involucradas en el índice
Si el índice es compuesto, la complejidad de búsqueda depende de la selectividad de cada columna
CREATE UNIQUE INDEX
{nombre_del_indice}
ON
{nombre_de_la_tabla}
({columna_1}, {columna_2}, ..., {columna_n});
Se usan cuando queremos que una columna, o combinación de columnas, también sean únicas dentro de una misma tabla
Si el índice es compuesto, la complejidad de búsqueda depende de la selectividad de cada columna
CREATE FULLTEXT INDEX
{nombre_del_indice}
ON
{nombre_de_la_tabla}
({columna_1}, {columna_2}, ..., {columna_n});
Se usan cuando queremos hacer más eficiente la búsqueda dentro de una, o varias, columnas de tipo texto (char, varchar o text)
Si el índice es compuesto, la complejidad de búsqueda depende de la selectividad de cada columna
Pueden hacer ofrecer resultados por relevancia o con derivación de palabras
CREATE FULLTEXT INDEX
{nombre_del_indice}
ON
{nombre_de_la_tabla}
({columna_1}, {columna_2}, ..., {columna_n});
Se usan cuando queremos hacer más eficiente la búsqueda dentro de una, o varias, columnas de tipo texto (char, varchar o text)
Si el índice es compuesto, la complejidad de búsqueda depende de la selectividad de cada columna
Pueden hacer ofrecer resultados por relevancia o con derivación de palabras
Pueden ocupar mucho espacio y en muchos proveedores públicos están deshabilitadas
DROP INDEX
{nombre_del_indice};
Podemos eliminar un índice, sin importar del tipo que sea, con una sola instrucción
En general no se deben usar en tablas pequeñas
Tampoco es recomendable usarlos en columnas que tengan muchos valores nulos o que son manipuladas con frecuencia
Se modifican siempre que se agregan o actualizan datos en una tabla
By Gilberto 🦁
Índices
Desarrollo visualizaciones y aplicaciones en línea, colaboro con distintos medios digitales