FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Velocidad de respuesta de servidor
Hola a todos. Muchas gracias por su ayuda. Mi problema es el siguiente.
Trabajo con Ms SQL Server 2005, me conecto por medio de Ado. Yo solia usar Adotables para la conexion con las tablas, pero viendo los consejos de ustedes parece que es mucho mas rapido el tiempo de respuesta del servidor cuando se usa una adoquery porque el servidor solo envia a mi aplicacion el resultado de mi consulta y no toda la tabla. En fin tengo 2 tablas: maestro - detalle, como yo trabajaba con adotable a la tabla detalle le ponia como mastersource el datasource de la tabla maestro. Al pasar esta relacion a adoquery tuve problemas. Leyendo un poco la ayuda de delphi arme la relacion de la siguiente forma: tengo las siguientes tablas en el servidor: - resumen: dia, horain, grupo, idnom, hingresada, confir, fechreser, nrocontrol, operacion, activo. - clientes: idnombre, nombre, nombre2, apellido, telefono - agenda: dia, gabinete, hora, grupo, idnom, idprofesio, idservicio - componente adoquery adoqresu En el valor de la propiedad (TWideStrings) del adoqresu pongo: select dia, horain, grupo, idnom, hingresada, confir, fechreser, nrocontrol, operacion, activo, idnombre, nombre, nombre2, apellido, telefono from resumen, clientes where (dia = :fecha) and (activo = 'True') and (idnombre = idnom) Puse un valor "fecha" a la propiedad (Tparameters) del adoqresu, este valor lo uso para elegir el dia en que se va a realizar la consulta de resumen. Esta forma es la que explica la Ayuda de Delphi, nose si habra otra mas rapida o mejor. - componente adoquery adoagenda En el valor de la propiedad (TWideStrings) del adoagenda pongo: select dia, gabinete, hora, grupo, idnom, idprofesio, idservicio from agenda where dia = :fecha and idnom = :idnombre El boton que realiza los calculos tiene las siguientes instrucciones: adoqresu.Active := false; adoqresu.Parameters[0].value := varifecha; adoqresu.active := true; while not adoqresu.Eof do begin adoqclientes.Active := false; adoqclientes.Parameters[0].Value := varifecha; adoqclientes.Parameters[1].Value := adoqresu.fields[3].value; adoqclientes.Active := true; while not adoqclientes.eof do begin calcularresultado; // calcularresultado solo cuenta la cantidad de cada idservicios adoqclientes.next; end; adoqclientes.next; end; Este procedimiento funciona aceptablemente cuando la cantidad de registros que tiene tanto la tabla resumen y agenda son pocos. Pero con una tabla resumen con 12000 y agenda con 60000 registros aprox. y despues de realizar la consulta y devolver en promedio "solo" 200 registros aprox. el servidor se tarda entre 5 y 15 segundos. Me parece que un servidor que se demore 5 segundos en devolverte 200 registros sin nada pesado (imagen o cosa por el estilo, solo datos del tipo smallint o varchar) no es un servidor que funcione correctamente. O el servidor funciona mal o la consulta esta mal hecha o no estoy utilizando los componentes correctos o las funciones de los componentes que uso no son las correctas. Yo tengo la esperanza que el problema sea falta de recursos de pc, tengo en una sola computadora con 1gb de ram y procesador athlon de 2100 ejecutando el servidor sql server y mi aplicacion. Se que la memoria minima no es suficiente pero para pruebas pense que no afectaria tanto al rendimiento de mi aplicacion. Pero antes de comprar una computadora mas nueva quiero estar seguro que el problema es ese. Desde ya gracias por sus consejo y disculpen lo largo consulta. Gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Dar tiempo de respuesta a una consulta | Eolo | Conexión con bases de datos | 2 | 19-02-2004 15:30:15 |
La mejor respuesta de Exámen. | obiwuan | Humor | 1 | 08-08-2003 19:09:39 |
Respuesta | danytorres | Varios | 2 | 16-07-2003 20:55:43 |
|