Ver Mensaje Individual
  #18 (permalink)  
Antiguo 06/12/2012, 12:30
GeriReshef
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Elegir mejor consulta de estas dos

Vamos a suponer que tienes una tabla con cuatro columnas: A,B,C,D;
sin ningun índice.

Si ejecutas Select * From MiTabla o Select * From MiTabla Where ... el sistema tendra que ejecutar Table Scan, es decir - pasar todas las filas de la tabla para encontrar lo que buscas (como Libras ya mencionó).

Ahora vamos a suponer que creas un Clustered Index con la columna A,
y un Index (Non Clustered) con las columnas B, C.
Select * From MiTabla el sistema va a hacer un Clustered Index Scan en lugar de Table Scan porque ahora la tabla esta almacenada ordenada a base a columna A (=Clustered Index).
Select * From MiTabla Where A=... el sistema va a ejecutar un Clustered Index Seek que significa que va a aprovechar el Clustered Index para encontrar las filas deseadas directamente sin tener que pasar todas las filas.
Select B,C From MiTabla Where B=... And C=... el sistema va a ejecutar un Index Seek para encontrar las filas con el índice.
Select * From MiTabla Where D=... el sistema va a ejecutar un Clustered Index Scan. (¿sabes porque?)
Select * From MiTabla Where B=... And C=... el sistema tendrá que elegir entre Clustered Index Scan y Index Seek + Clustered Index Seek porque el Index no incluye todas las columnas, sino- solamente B & C.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog