Índices

  • Los índices son estructuras que aceleran la recuperación de datos al proporcionar un acceso rápido a las filas de una tabla.
  • Mejoran el rendimiento de las consultas al reducir la necesidad de buscar a través de todas las filas.
CREATE INDEX idx_nombre ON Empleados(Nombre);

Se emplea un índice SQL para poder recuperar datos de una base de datos de una manera más rápida. El indexar una tabla o la vista es sin lugar a dudas, una de las mejores opciones de poder mejorar el rendimiento de las consultas y aplicaciones.

Un índice SQL es una tabla de búsqueda rápida para poder encontrar los registros que los usuarios necesitan buscar con mayor frecuencia. Ya que un índice es pequeño, rápido y optimizado para búsquedas rápidas. Además, que son muy útiles para conectar las tablas relacionales y la búsqueda de tablas grandes.

Los índices de SQL son la principal herramienta de rendimiento, por lo que generalmente se aplican si una base de datos se incrementa.

Índices clúster

La creación de un índice clúster en una tabla (montón) o la eliminación y nueva creación de un índice clúster existente requiere área de espacio adicional disponible en la base de datos para acomodar la ordenación de datos y una copia temporal de la tabla original o datos del índice clúster existente.

  • Agrupado
    • Los índices clúster ordenan y almacenan las filas de los datos de la tabla o vista de acuerdo con los valores de la clave del índice. Estos valores clave son las columnas incluidas en la definición del índice. Solo puede haber un índice clúster por cada tabla, porque las filas de datos solo pueden estar almacenadas de una forma.

    • La única ocasión en la que las filas de datos de una tabla están ordenadas es cuando la tabla contiene un índice clúster. Cuando una tabla tiene un índice clúster, la tabla se denomina tabla agrupada. Si una tabla no tiene un índice clúster, sus filas de datos están almacenadas en una estructura sin ordenar denominada montón.

Índices no clúster

A partir de SQL Server 2016 (13.x) y en Azure SQL Database, puede crear un índice no agrupado en una tabla almacenada como un índice de almacén de columnas agrupado.

Un Nonclustered Index es una estructura de datos que se utiliza para mejorar la velocidad de búsqueda de datos en una tabla. A diferencia del Clustered Index, el Nonclustered Index no reorganiza físicamente los datos de la tabla, sino que crea un índice separado para facilitar la búsqueda de los datos.

  • No agrupado
    • Los índices no clúster tienen una estructura separada de las filas de datos. Un índice no clúster contiene los valores de clave de índice no clúster y cada entrada de valor de clave tiene un puntero a la fila de datos que contiene el valor clave.

    • El puntero de una fila de índice no clúster hacia una fila de datos se denomina localizador de fila. La estructura del localizador de filas depende de si las páginas de datos están almacenadas en un montón o en una tabla agrupada. Si están en un montón, el localizador de filas es un puntero hacia la fila. Si están en una tabla agrupada, el localizador de fila es la clave de índice clúster.

    • Puede agregar columnas sin clave al nivel hoja de un índice no agrupado con el fin de eludir los límites existentes para las claves de índice, así como para ejecutar consultas indexadas y totalmente cubiertas.

Creación de índices

  • Nonclustered
CREATE INDEX index1 ON schema1.table1 (column1);
  • Clustered
CREATE CLUSTERED INDEX index1 ON database1.schema1.table1 (column1);
  • Índice no agrupado con una restricción UNIQUE y criterio de ordenación
CREATE UNIQUE INDEX index1 ON schema1.table1 (column1 DESC, column2 ASC, column3 DESC);
Built with LogoFlowershow