Se podría utilizar el incluir para añadir una o más columnas para el nivel hoja de un índice no agrupado, si al hacerlo, puede "cubrir" sus consultas.
Imagínese que usted necesita para consultar el ID de un empleado, ID de departamento y apellido.
SELECT EmployeeID, DepartmentID, LastName
FROM Employee
WHERE DepartmentID = 5
Si le sucede que tiene un índice no agrupado en (EmployeeID, DepartmentID), una vez que encuentre los empleados de un departamento dado, ahora tiene que hacer "marcador de búsqueda" para obtener el registro real empleado completa , solo para obtener la columna de apellido. Eso puede ser bastante caro en términos de rendimiento, si encuentra muchos empleados.
Si se hubiera incluido esa apellido en su índice:
CREATE NONCLUSTERED INDEX NC_EmpDep
ON Employee(EmployeeID, DepartmentID)
INCLUDE (Lastname)
continuación, toda la información que necesita está disponible en el nivel hoja del índice no agrupado. Sólo mediante la búsqueda en el índice no agrupado y la búsqueda de sus empleados para un determinado departamento, que tiene toda la información necesaria, y la búsqueda de marcador para cada empleado que se encuentra en el índice ya no es necesario -> ahorrará mucho tiempo.
Obviamente, no puede incluir todas las columnas en cada índice no agrupado, pero si tiene consultas a las que falta una o dos columnas para "cubrir" (y que se usan mucho), puede ser muy útil para INCLUIR aquellos en un índice adecuado no agrupado.
Entonces, ¿esta sería una técnica para crear una versión menos costosa de un índice cubierto? – JMarsch
@gbn, ¿te importaría explicar esta oración con más detalle y explicar por qué significa que la cláusula include no es útil para ordenar, etc. ?: "La cláusula INCLUDE agrega los datos en el nivel más bajo/hoja, en lugar de en el índice Esto hace que el índice sea más pequeño porque no forma parte del árbol " –
@JMarsch: perdón por la respuesta tardía, pero sí, esto es exactamente lo que es. – gbn