SQL Server - Tiempos de espera

 
Vista:

Tiempos de espera

Publicado por Isma (2 intervenciones) el 24/05/2007 17:53:05
Hola.

El problema que tengo es el siguiente: Tengo una tabla con alrededor de 400.000 registros. Cuando intento acceder a ella (ya sea con restricciones o no) desde mi aplicación, al cabo de un rato me aparece el mensaje "Terminó el tiempo de espera", y se interrumpe la operación.

400.000 registros es una cifra considerable, pero no le encuentro sentido a que SQL Server no dé una respuesta en un tiempo razonable.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Tiempos de espera

Publicado por Isaías (3308 intervenciones) el 25/05/2007 20:54:00
¿Que haces con la tabla?, manda el resultado de:

sp_help tutabla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tiempos de espera

Publicado por monky (56 intervenciones) el 26/05/2007 02:25:04
Está claro que el problema lo tienes en la query....pueden ser 2 cosas... o te faltan indices en tu tabla o si es que lo tienes no sirven para tu consulta y se produce un tablescan;o sea, lee cada vez toda la tabla ya que las condiciones en el where no toman los indices....

Revisa que tengas creado al menos un indice clustered y otros que te sirvan para la condicion del where; y cuidado en las condiciones del where... no uses convert ni substring, esas cosas matan las querys
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tiempos de espera

Publicado por Isma (2 intervenciones) el 26/05/2007 13:21:43
Hola, y en primer lugar gracias por vuestras dos respuestas.

Lo que intento hacer con la tabla es obtener el registro anterior o el siguiente a otro registro de referencia. Para ello realizo consultas del tipo:

SELECT TOP 1 * FROM miTabla WHERE campo > Referencia ORDER BY campo ASC

para obtener el registro siguiente, o por el contrario:

SELECT TOP 1 * FROM miTabla WHERE campo < Referencia ORDER BY campo DESC

si quiero el registro anterior.

Por otro lado, también he seguido el consejo de monky, y he creado un índice sobre el campo que utilizo en la restricción where, y el tiempo ha mejorado notablemente, de hecho el mensaje de error no ha vuelto a aparecer, de modo que muchas gracias.

Tal vez exista alguna manera, mediante consultas sql, de desplazarme de registro en registro, en vez de utilizar las consultas de arriba, pero las desconozco. Por otra parte tengo entendido que tampoco es muy eficiente abusar de la creación de índices ya que su mantenimiento puede ser costoso.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar