La Web del Programador: Comunidad de Programadores
 
    Pregunta:  46299 - TIMEOUT EN CONSULTA A BASE DE DATOS
Autor:  superurbi superurbi
Estoy haciendo una web que guarda y consulta datos desde un fichero de access. El problema que tengo es que solo funciona bien la primera consulta, cuando hago una segunda se queda \"pensando\" y al final salta un timeout y aparece el tipico mensaje del IE. Y esto a pesar de que la tabla de la que consulto tiene 400 filas nada más aunque si que la cruzo con una de 7200 filas. Alguna vez funciona bien la 1ª y 2ª vez incluso. ¿Puede que no este cerrando bien la conexión de la base de datos una vez terminanda la consulta? ¿Como puede asegurar de que sucesivas consultas se hagan como si fuera la primera? ¿Puede que sea algo que tenga que ver con algun aspecto de .NET que aún no domino? Decir también que los datos se cargan en un datagrid.

Gracias.

  Respuesta:  Julio César Panderi
Primero que nada asegurate que al hacer la consulta abra la conexión, y la cierre al momento de terminar la consulta. Segundo, podes modificar la cadena de conexión a la base de datos y colocar un timeout de cero ( 0 ), pero tene en cuenta que si haces esto esperara en forma indefinida hasta poder terminar la consulta. Por ultimo, tene en cuenta la cantidad de filas sobre los que estas trabajando, si bien vos decis que son solo 400, luego haces un Join con otra tabla de 7200, lo que da un conjunto de resultado de 2.880.000 filas (400 x 7200). Para solucionar este problema podes usar indices, la opción más recomendada es que crees indices en las columnas por las cuales haces el Join en ambas tablas. Espero te sirva.