T-SQL: índices

Índices son tablas de búsqueda especiales que un motor de búsqueda de bases de datos puede utilizar para acelerar las búsquedas de datos. Simplemente pon, índice un puntero a los datos de la tabla. Un puntero en una base de datos es muy similar al puntero al final de un libro.

Por ejemplo, si desea consultar todas las páginas de un libro sobre un tema específico, primero debe consultar un índice que enumera todos los temas en orden alfabético y, a continuación, consultar uno o más números de página específicos.

El í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 afectar los datos.

La creación de índices incluye una instrucción CREATE INDEX que le permite nombrar el índice, especificar la tabla y la columna o columnas a indexar, y especificar si el índice está en orden ascendente o descendente.

Los índices también pueden ser únicos, como la restricción UNIQUE, porque el índice evita registros duplicados en una columna o combinación de columnas que tienen el índice.

Comando CREATE INDEX

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 un índice que se crea en función de una sola columna de una 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 mejorar el rendimiento, sino también para la integridad de los datos. El índice único evita 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)

Independientemente de si está creando un índice de una sola columna o un índice compuesto, tenga en cuenta las columnas que puede usar con mucha frecuencia como criterios de filtro en la cláusula WHERE de una consulta.

Si está utilizando solo una columna, debe elegir un índice de una sola columna. Si hay dos o más columnas que se utilizan con frecuencia como filtros en la cláusula WHERE, un índice compuesto es 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 generan automáticamente para restricciones de clave primaria y restricciones únicas.

Comando DROP INDEX

El índice se puede eliminar mediante el comando MS SQL SERVER DROP. Se debe tener precaución al eliminar un índice, ya que el rendimiento puede disminuir o aumentar.

Sintaxis

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

DROP INDEX tablename.index_name

¿Cuándo evitar los índices?

Si bien los índices están diseñados para mejorar el rendimiento de la base de datos, hay ocasiones en las que deben evitarse. Las siguientes pautas indican cuándo revisar el uso del índice:

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

  • Las tablas que están sujetas a actualizaciones o inserciones por lotes grandes y frecuentes no deben indexarse.

  • Los índices no deben usarse en columnas que contengan una gran cantidad de valores nulos.

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

🚫