Indices con Columnas Incluídas

Comúnmente, el proceso diseño de los índices se limita a la selección de aquellas columnas que forman parte de la cláusula WHERE y que sirven como filtro para limitar el resultado de las consultas. Por ejemplo:

SELECT Apellido, Nombre
FROM dbo.Empleado
WHERE Departamento = 4

En este caso, Departamento sirve para filtrar el resultado de la consulta y lo típico sería crear un índice basado en dicha columna:

CREATE INDEX IX_Departamento ON dbo.Empleado
(Departamento)

Sin embargo, SQL Server también te ofrece la opción de incluir columnas extras como parte del índice y eliminar por lo completo la necesidad de consultar las tablas base. Para ejemplificar, la consulta anterior selecciona las columnas Apellido y Nombre de la tabla Empleado, por lo tanto una forma de eliminar el acceso a la tabla Empleado sería crear un índice basado en la columna Empleado e incluir o adicionar las dos columnas que se están seleccionando:

CREATE INDEX IX_Departamento ON dbo.Empleado
(Departamento)
INCLUDE (Apellido, Nombre)

En este caso, debido a que el índice mismo almacena tanto la columna filtro como las columnas seleccionadas, entonces la consulta puede completarse sin que sea necesario accesar la tabla Departamento, lo cual reduce el acceso a disco e incrementa consecuentemente el desempeño del servidor.

This entry was posted in Optimización. Bookmark the permalink.

Leave a Reply