T-SQL: índices

Indexesson tablas de búsqueda especiales que el motor de búsqueda de la base de datos puede utilizar para acelerar la recuperación de datos. En pocas palabras, unindexes 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 tratan 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 las consultas SELECT y las cláusulas WHERE, pero ralentiza la entrada de datos, con declaraciones UPDATE e INSERT. Los índices se pueden crear o eliminar sin ningún efecto sobre los datos.

La creación de un índice implica la instrucción CREATE INDEX, 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, similar a la restricción ÚNICA, ya que el índice evita entradas duplicadas en la columna o combinación de columnas en las que hay un índice.

Comando CREAR ÍNDICE

A continuación se muestra la sintaxis básica de CREATE INDEX.

Sintaxis

CREATE INDEX index_name ON table_name

Índices de una sola columna

Un índice de una sola columna es aquel que se crea basándose en una sola columna de la tabla. A continuación se muestra la sintaxis básica.

Sintaxis

CREATE INDEX index_name 
ON table_name (column_name)

Ejemplo

CREATE INDEX singlecolumnindex 
ON customers (ID)

Í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. A continuación se muestra la sintaxis básica.

Sintaxis

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Ejemplo

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Índices compuestos

Un índice compuesto es un índice en dos o más columnas de una tabla. A continuación se muestra la sintaxis básica.

Sintaxis

CREATE INDEX index_name on table_name (column1, column2)

Ejemplo

CREATE INDEX compositeindex 
on customers (NAME, ID)

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 la base de datos crea automáticamente cuando se crea un objeto. Los índices se crean automáticamente para restricciones de clave primaria y restricciones únicas.

Comando DROP INDEX

Se puede eliminar un índice mediante el comando MS SQL SERVER DROP. Se debe tener cuidado al eliminar un índice porque el rendimiento puede disminuir o mejorar.

Sintaxis

A continuación se muestra la sintaxis básica.

DROP INDEX tablename.index_name

¿Cuándo evitar los índices?

Aunque los índices están destinados a mejorar el rendimiento de las bases de datos, hay ocasiones en las que deben evitarse. Las siguientes pautas indican cuándo se debe reconsiderar el uso de un índice:

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

  • Las tablas que tienen operaciones de inserción o actualización por lotes grandes y frecuentes no deben indexarse.

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

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