SQL: índices

Los índices son special lookup tablesque el motor de búsqueda de la base de datos puede utilizar para acelerar la recuperación de datos. En pocas palabras, un índice es un puntero a datos en una tabla. Un índice en una base de datos es muy similar a un índice al final de un libro.

Por ejemplo, si desea hacer referencia a todas las páginas de un libro que trata un tema determinado, primero debe consultar el índice, que enumera todos los temas en orden alfabético y luego se hace referencia a uno o más números de página específicos.

Un índice ayuda a acelerar SELECT consultas y WHERE cláusulas, pero ralentiza la entrada de datos, con la UPDATE y el INSERTdeclaraciones. Los índices se pueden crear o eliminar sin ningún efecto sobre los datos.

La creación de un índice implica la CREATE INDEX instrucción, que le permite nombrar el índice, especificar la tabla y qué columna o columnas indexar, e indicar si el índice está en orden ascendente o descendente.

Los índices también pueden ser únicos, como el UNIQUE restricción, ya que el índice evita entradas duplicadas en la columna o combinación de columnas en las que hay un índice.

El comando CREATE INDEX

La sintaxis básica de un CREATE INDEX es como sigue.

CREATE INDEX index_name ON table_name;

Índices de una sola columna

Se crea un índice de una sola columna basado en una sola columna de la tabla. La sintaxis básica es la siguiente.

CREATE INDEX index_name
ON table_name (column_name);

Índices únicos

Los índices únicos se utilizan no solo para el rendimiento, sino también para la integridad de los datos. Un índice único no permite que se inserten valores duplicados en la tabla. La sintaxis básica es la siguiente.

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Índices compuestos

Un índice compuesto es un índice en dos o más columnas de una tabla. Su sintaxis básica es la siguiente.

CREATE INDEX index_name
on table_name (column1, column2);

Ya sea para crear un índice de una sola columna o un índice compuesto, tenga en cuenta las columnas que puede usar con mucha frecuencia en la cláusula WHERE de una consulta como condiciones de filtro.

Si solo se usa una columna, la opción debe ser un índice de una sola columna. Si hay dos o más columnas que se utilizan con frecuencia en la cláusula WHERE como filtros, el índice compuesto sería la mejor opción.

Índices implícitos

Los índices implícitos son índices que el servidor de bases de datos crea automáticamente cuando se crea un objeto. Los índices se crean automáticamente para restricciones de clave primaria y restricciones únicas.

El comando DROP INDEX

Un índice se puede eliminar usando SQL DROPmando. Se debe tener cuidado al eliminar un índice porque el rendimiento puede disminuir o mejorar.

La sintaxis básica es la siguiente:

DROP INDEX index_name;

Puede consultar el capítulo Restricción de ÍNDICE para ver algunos ejemplos reales sobre índices.

¿Cuándo se deben evitar los índices?

Aunque los índices están destinados a mejorar el rendimiento de una base de datos, hay ocasiones en las que deben evitarse.

Las siguientes pautas indican cuándo debe reconsiderarse el uso de un índice.

  • Los índices no deben usarse en tablas pequeñas.

  • Tablas que tienen operaciones de inserción o actualizaciones por lotes grandes y frecuentes.

  • Los índices no deben usarse en columnas que contienen un número elevado de valores NULL.

  • Las columnas que se manipulan con frecuencia no deben indexarse.