Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2007
capo979 capo979 is offline
Miembro
 
Registrado: abr 2007
Posts: 87
Poder: 18
capo979 Va por buen camino
Procedure en Firebird lento o IbQuery lento

Hola que tal? tengo un store procedure que trae los datos de personas de una tabla y muestra también datos de otras tablas. Esto lo hago con un store procedure. Y lo muestro en delphi 7 en un dbgrid a través de un IBQuery. El tema es que con 200 personas anda joya con 500 también pero ya con 1000 empieza a andar lento y ni les cuento con 10000 personas tarda como 10 segundos y esto parece que sea algo exponencial. La consulta es si saben como mejorar esto dado que me está trayendo muchos dolores de cabeza.

Muchas gracias

Saludos a todos
Responder Con Cita
  #2  
Antiguo 16-07-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo no entiendo mucho de IB/FB, pero por poco que entienda, si no pones la consulta o StoredProc que estás haciendo poco podremos ayudar...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 16-07-2007
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Tienes dos posibilades:

- Que la consulta en si no escale bien (se puede comprobar con ibconsole o ibexpert el tiempo de ejecucion), si es este caso faltaran los indices adecuados en las tablas para acelerarla, o estara mal diseñada y habra que hacer la consulta de otro modo.

-Que la consulte escale bien, pero se tarde demasiado tiempo en recibir la informacion del servidor al cliente, porque la velocidad de la red sea lenta o se traigan demasiados registros de golpe.
En este caso reparar la red local para que vaya a su velocidad, o si se traen demasiados registros de golpe, pues tan sencillo como no recogerlos todos, sino solo aquellos que sean necesario visualizar en cada momento en el ordenador cliente.

Saludos
Responder Con Cita
  #4  
Antiguo 16-07-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
gabrielkc Va por buen camino
Que versión usas?

en cualquier caso te recomiendo que cambies a Firebird 2.0. Pero por favor pon más información. La sentencia, que S.O. que versión de Interbase.

10000 registros por si solos no son nada, pero digamos :

Select * from Tabla10000registros, OtraTabla10000registros

además de ser generalmente no necesario es muy ineficiente,

Usar Joins, crear índices, seleccionar SÓLO los campos necesarios es una buena costumbre.
Responder Con Cita
  #5  
Antiguo 16-07-2007
capo979 capo979 is offline
Miembro
 
Registrado: abr 2007
Posts: 87
Poder: 18
capo979 Va por buen camino
Claro a mi me gustaría saber como hacer para decirle al IBQuery que no me traiga todos los registros sino solamente los que se muestran o los primeros mil .
Responder Con Cita
  #6  
Antiguo 16-07-2007
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Talking

Saludos.

Para limitar los registros en Firebird tienes FIRST desde la 1.5.
En Interbase/Firebird tienes SKIP y si no me equivoco creo que desde Interbase 6.5 tienes ROWNUM o ROWS.

Lo que si te aconsejo como lo hicieron anteriormente es que te cambies para Firebird 2.0.

Hasta luego.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #7  
Antiguo 16-07-2007
capo979 capo979 is offline
Miembro
 
Registrado: abr 2007
Posts: 87
Poder: 18
capo979 Va por buen camino
Yo tengo los indices creados y utilizo firebird 1.5. El tema es que yo desde el EMS Firebird Manager ejecuto el store procedure y no tarda casi nada y lo hago desde delphi y tarda mucho. Ustedes dicen que con firebird 2.0 anda mejor??
Responder Con Cita
  #8  
Antiguo 16-07-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.557
Poder: 25
egostar Va camino a la fama
Cuando ejecutas un SP con algún administrador pasas parámetros directamente, pero cuando lo haces con delphi, necesariamente requieres de enviar esos parámetros, me pregunto si no hay alguna rutina que está generando el retrazo que comentas y no necesariamente al ejecutar el SP.

Digo, solo estoy hablando al aire, pero si nos ayudas mostrando lo que estas haciendo sería mucho mejor.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Muy lento Sql IVAND SQL 8 27-01-2010 03:59:52
Prepare lento en Firebird.. y en MySQL?? xander MySQL 11 01-11-2006 03:02:36
ADO lento CHiCoLiTa Conexión con bases de datos 6 28-07-2004 17:59:46
MDI lento tomasgarcia OOP 1 27-07-2004 20:28:05
lento carlomagno Firebird e Interbase 4 02-07-2004 13:48:08


La franja horaria es GMT +2. Ahora son las 10:18:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi