Index Seek & Index Scan

29/10/2003 - 21:58 por Goku | Informe spam
Hola a Todos , Necesito saber si existe alguna manera de
forzar en una consulta la elección del tipo de operación
al momento de utilizar un indice ( Index Seek o Index
Scan ) . Actualmente estoy trabajando con un SqlServer
7.0 .

También me serviría entender porque motivo el DBMS elige
Index Seek o Index Scan

El tipo de operación a utilizar puede ser vista mediante
el ShowPlan.

Desde ya muchas Gracias

Goku
 

Leer las respuestas

#1 Sérgio Monteiro
30/10/2003 - 03:33 | Informe spam
Bueno,

1) No es posible forzar el SQL a usar un Index Seek en lugar de Index Scan,
con algun hint. Eso lo decide el Query Optimizer, basandose en los indices,
estadísticas y la construcción de su consulta.

2) Un Index Seek muchas veces mas rápido, y por eso SQL Server va a
considerar siempre utilizar el Seek. Pero, si no es posible, el va usar un
Scan. Ponele que tengas una tabla en que algunos valores que estan en un
index sean nulos, y que necesites usar isnull para hacer una sumatoria, o
algo asi. En esta situacion, el optimizador va a usar un Index Scan. Pero
si, buscas por un valor especifico (Where x=1, por exemplo), el va usar un
Seek.

No siempre el Seek es mas rapido, pues que en algunas situaciones, es mejor
recorrer un rango del indice que hacer los calculos necesarios para un Seek.
Por eso, hay ocasiones en que SQL Va a elegir un Scan, aun que te parezca
que él tenia que usar un seek.

saludos,


Sérgio Monteiro - Brasil
www.sqlpass.org
"Goku" escreveu na mensagem
news:034301c39e5f$56ae96b0$
Hola a Todos , Necesito saber si existe alguna manera de
forzar en una consulta la elección del tipo de operación
al momento de utilizar un indice ( Index Seek o Index
Scan ) . Actualmente estoy trabajando con un SqlServer
7.0 .

También me serviría entender porque motivo el DBMS elige
Index Seek o Index Scan

El tipo de operación a utilizar puede ser vista mediante
el ShowPlan.

Desde ya muchas Gracias

Goku

Preguntas similares