2010-10-09 10 views
5

SQL Server 2005 incluye la característica "índice de cobertura" que nos permite seleccionar más de una columna no clave para incluir en el índice no agrupado existente.Cuál es la diferencia entre el índice compuesto no agrupado y el índice de cobertura

Por ejemplo, tengo las siguientes columnas:

EmployeeID, DepartmentID, DesignationID, BranchID 

Aquí hay dos escenarios:

  • EmployeeID es una clave principal con índice agrupado y los restantes columnas (DepartmentID, DesignationID , BranchID) se toman como índice no agrupado (índice compuesto).

  • EmployeeID es una clave principal con el índice agrupado y DepartmentID es índice no agrupado con DesignationID, BranchID son "incluido columnas" para el índice no agrupado.

¿Cuál es la diferencia entre los dos anteriores? Si ambos son lo mismo, ¿qué hay de nuevo en introducir el concepto de "índice de cobertura"?

+0

posible duplicado con http://stackoverflow.com/questions/1307990/why-use-the-include-clause-when-creating-an-index –

Respuesta

3

La diferencia es que si hay dos filas con el mismo DepartmentID en el primer índice, se ordenarán en función de sus valores de DesignationID y BranchID. En el segundo caso, no se ordenarán entre sí y podrían aparecer en cualquier orden en el índice.

En términos de lo que esto significa para su aplicación:

  • Una consulta que puede utilizar un índice en (DepartmentID, DesignationID) puede ser más eficiente con la primera consulta que el segundo.
  • La creación del primer índice puede llevar un poco más de tiempo debido a la clasificación adicional requerida.
0

índice Cubierto es un índice no agrupado con INCLUDE cláusula

Cuestiones relacionadas