FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Refrescar tabla y consulta
Hola. Tengo una base de datos con aproximadamente 180.000 registros. Ejecuto una consulta SQL una sola vez la cual es demorada.
Necesito que cuando el usuario cree un registro nuevo se actualice en la tabla y en la consulta sin necesidad de volver a hacer la primera consulta (es decir sin hacer query.Close query.Open o query.refresh) debido a que se demora mucho tiempo. Es posible hacerlo? Gracias. Carlos E. |
#2
|
||||
|
||||
Hola
No se que base de datos usas, pero una consulta bien hecha deberia tardar uno cuandos segundos. Tengo tablas con mas de esos registros y las consultas son muy rapidas. Lo que si alenta mucho la cosa es el uso de refrech, no lo creo necesario. Saludos |
#3
|
||||
|
||||
Uso bases de datos .dbf y las acceso con un componente de ADS (Advantage Database Server). Pero la consulta es lenta.
Gracias. |
#4
|
||||
|
||||
¿realmente hay necesidad de mostrar 180,000?
__________________
|
#5
|
||||
|
||||
Hola Contra Veneno.
De hecho, es precisamente lo que pienso, ni siquiera caben en la pantalla. Las consultas se hacen en rangos de 25 o 50, 180000, me parece algo raro. Saludos |
#6
|
||||
|
||||
De pronto no me he explicado bien. Tengo una tabla donde estas todas las facturas de los clientes (registros positivos) y los pagos (registros negativos). Cuando un cliente desea pagar una factura, hago la consulta en la tabla que tiene 180.000 registros para filtrar el cliente y a su vez esta consulta debe cruzar las facturas vs. los pagos para mostrarme que facturas debe el cliente. En este caso solo muestra lo que debe el cliente, las que estan pagas no las muestra.
Si deseo consultar otro cliente debo volver a correr la misma consulta otra vez pero con parámetros diferentes, en este caso la cédula. Si esta consulta la hago mediante un procedimiento estructurado sin SQL y trabajando índices es rápida. Pero si lo hago mediante SQL es mucho mas lenta. Lo que quiero es poder agilizar mi consulta. Será que me falta utilizar indices en la consulta SQL o el procedimiento que realizo no es el adecuado? Gracias por sus respuestas. Carlos E. |
#7
|
||||
|
||||
Hola
Es un poco dificil entender el como lo haces sin ver el codigo sql que usas para mostrar la consulta. La verdad no creo que tenga mucho peso esto de los indices, abria que ver primero que estas haciendo y como. Indicanos: Tipo de base de datos. Componentes que usas. Codigo sql que llama la consulta. Y por partes veremos que pasa. Saludos |
#8
|
||||
|
||||
Muchas gracias por tu pronta respuesta.
Tipo de base de datos: tabla.dbf Componentes que utilizo: TAdsQuery Codigo de la consulta: sqlFactura.SQL.Clear; sqlFactura.SQL.Add('SELECT numefact AS Factura, sum(valor) AS Valor, fechinivig AS Inicio_Vigencia, fechfinvig AS Fin_Vigencia'); sqlFactura.SQL.Add('FROM factura'); sqlFactura.SQL.Add('GROUP BY cedula, numefact, fechinivig, fechfinvig, compania, producto'); sqlFactura.SQL.Add('HAVING ((cedula = :sCedula) and (sum(valor) <> 0) and (compania = :sCompania) and (producto = :sProducto))'); sqlFactura.SQL.Add('ORDER BY cedula, fechinivig'); sqlFactura.ParamByName('sCedula').AsString := F_Recaudos.eCedula.Text; sqlFactura.ParamByName('sCompania').AsString := F_Recaudos.cbxCompania.Text; sqlFactura.ParamByName('sProducto').AsString := F_Recaudos.cbxProducto.Text; sqlFactura.Open; Carlos E. |
#9
|
||||
|
||||
Hola
La verdad sigo intrigado, para mi es una consulta sencilla a una tabla (factura), pidiendo que siga ciertos parametros. Perdona que la alla puesto asi, pero me resulta mas facil leerla, se hace un solo bloque. La opcion HAVING en algunos casos me ha alentado consultas. No se porque se te alenta esta sentencia, la verdad lo desconozco. Saludos |
#10
|
||||
|
||||
Hola
Perdon (trate de editarlo pero no pude, se borra lo bonito) creo que va asi: El where antes del group by. En el caso del having si es correcta la posicion. Saludos |
#11
|
||||
|
||||
Hola
Me estoy haciendo viejo, cada vez veo menos: Saludos |
#12
|
||||
|
||||
Ok. Gracias por todo. Estoy mirando la opción de procedimientos almacenados para ver si mejora el rendimiento.
Carlos E. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Actualizar o Refrescar una Tabla | Caral | Tablas planas | 2 | 20-02-2007 20:12:17 |
Actualizar una tabla con una consulta de otra tabla | JODELSA | SQL | 2 | 14-09-2006 04:07:01 |
Paso de una consulta a tabla | Alexander | Conexión con bases de datos | 1 | 07-05-2005 02:12:29 |
Refrescar rejilla en una consulta con order by | fjolivares | Conexión con bases de datos | 0 | 06-04-2004 17:02:00 |
Refrescar consulta | negama | SQL | 2 | 05-09-2003 15:45:39 |
|