optimizador de sql, indices y algo mas ...

12/05/2004 - 00:46 por csuma | Informe spam
Como estan amigos, tengo un problema con los indices q se usan en una
consulta.
Tengo 2 indices:
i1=Start_time
i2=Cod, Start_time
Y mi query (con una condicion como la de abajo) deberia de usar el indice i2
pero sin embargo usa el indice i1:
where Cod like '663774%' and start_time >= '2004-03-01 17:40:17.700' and
start_time <= '2004-05-11 19:40:17.700' (demora 45 minutos)
Pero si prolongo la fecha para q abarque un mayor rango alli recien se usa
el indice i2 y por ende la consulta es mas rapida q con la condicion
anterior
where Cod like '663774%' and start_time >= '2003-03-01 17:40:17.700' and
start_time <= '2004-05-11 19:40:17.700' (demora 2 minutos)"
Algun compañero tiburon por alli puede indicarme q esta pasando y como
solucionar este problema SIN TENER Q RECURRIR A WITH(INDEX(i2),nolock) ???
pues la condicion se genera dinamicamente y el indice a usar puede ser otro.
Gracias de antemano
 

Leer las respuestas

#1 Maxi
12/05/2004 - 01:52 | Informe spam
Hola, bueno amigo eso no es tan asi como lo dices!! Sql Server tiene sus
planes de Estadisticas y ejecucion los cuales determinaran que indices usar,
que opciones tenemos si no usa los que nosotros queremos

1) Hacer lo que has hecho vos
2) Actualizar las estadisticas de tu motor

UPDATE STATISTICS nombretabla

esto te actualiza las estadisticas de una tabla en particular, fijate si con
eso cambia la cosa :-)

Bye


Salu2

Maxi

Desarrollador 3 estrellas .NET
Buenos Aires - Argentina

MSN:

"csuma" escribió en el mensaje
news:
Como estan amigos, tengo un problema con los indices q se usan en una
consulta.
Tengo 2 indices:
i1=Start_time
i2=Cod, Start_time
Y mi query (con una condicion como la de abajo) deberia de usar el indice


i2
pero sin embargo usa el indice i1:
where Cod like '663774%' and start_time >= '2004-03-01 17:40:17.700' and
start_time <= '2004-05-11 19:40:17.700' (demora 45 minutos)
Pero si prolongo la fecha para q abarque un mayor rango alli recien se usa
el indice i2 y por ende la consulta es mas rapida q con la condicion
anterior
where Cod like '663774%' and start_time >= '2003-03-01 17:40:17.700' and
start_time <= '2004-05-11 19:40:17.700' (demora 2 minutos)"
Algun compañero tiburon por alli puede indicarme q esta pasando y como
solucionar este problema SIN TENER Q RECURRIR A WITH(INDEX(i2),nolock)


???
pues la condicion se genera dinamicamente y el indice a usar puede ser


otro.
Gracias de antemano


Preguntas similares