Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Degradacion de servicio - Firebird

Hola a todos .. Trabajo con firebird 1.5.1 y con delphi 6 +Ibx , cuando realizo una consulta a mi base de datos (Tablas cab_fac tiene unos 30000 registros y det_fac tiene unos 250000) , se me degrada totalmente el servicio es decir los terminales se vuelven lentos y por ende los ingresos a esas tablas el query que uso ademas se demora como unos 20 m en mostrar los resultados

este es el query

Cita:
Código PHP:
Select v.cod_producto,v.nombre,  sum(d.cantidadTcantVend,
sum(total_lineatventa,Round(sum(d.cantidad*d.precio_prom),2Tcosto

from cab_fac c
,det_fac d,vi_producto_bodega v
Where ca
.key_caja=c.key_caja
and c.estado_fac='T'
and  extractDate(c.fec_facturabetween :desde and :hasta
And c.key_cab_fac=d.key_cab_fac
and d.key_producto_b=v.key_producto_b
Group by v
.cod_producto,v.nombre 
como puedo hacer para mejora esta consulta la tabla cab_fac tiene indice a la fecha (fec_factura), porque se consume tantos recursos y porque es tan lenta con ese numero de registros
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 15-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En principio es muy complicado responder con un select por qué tarda tanto. Habría que comprobar estado de la base de datos, índices, modo de acceso a los datos, tarjetas de red, cableado, servidor, memoria, programas en el servidor...

Echa un vistazo a estos consejos por si te sirven de algo.
Responder Con Cita
  #3  
Antiguo 15-11-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias por tu respuesta

Pero por donde empezar, el servidor esta en perfecto estado es nuevesito , a que te refieres con el estado de base de datos todo el cableado esta certificado , porque cuando cambio por ejemplo no uniendo con Vi_producto_bodega y por ende no agrupando por cod_producto y nombre el resultado es mas rapido pero entonces como mostrare el nombre y el codigo

Seguire probando
__________________
IVAND
Responder Con Cita
  #4  
Antiguo 16-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La única manera de optimizar esa consulta es tener la base de datos, o sea, sólo puedes hacerlo tú.

Has dado una pista muy buena, mira esa vi_producto_bodega que parece que es la culpable.

Te aconsejo que uses un programa como IB Planalyzer para depurar la consulta hasta encontrar la forma óptima de hacerla.
Responder Con Cita
  #5  
Antiguo 16-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ha cambiado la dirección, ahora lo encontrarás aquí.
Responder Con Cita
  #6  
Antiguo 16-11-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias por tu respuesta amigo

Estoy bajando el programa que me recomendaste , seria interesante si existiese una guia de la manera de colocar las tablas , indices para obtener un mejor rendimiento


Gracias de nuevo
__________________
IVAND
Responder Con Cita
  #7  
Antiguo 16-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es cuestión de hacer pruebas, muchas pruebas, hasta encontrar la forma más óptima.
Cualquier consulta en un programa, que luego va a estar funcionando en una empresa, debe depurarse hasta encontrar la opción más efectiva, haciendo pruebas con muchos datos, lo más reales posibles.
Responder Con Cita
  #8  
Antiguo 18-11-2005
Ruitoquefly Ruitoquefly is offline
Registrado
 
Registrado: nov 2005
Ubicación: Colombia
Posts: 3
Poder: 0
Ruitoquefly Va por buen camino
Velocidad de consulta

Te comento que yo tambien tuve este problema, tenia una tabla de 2500000 de registros y las consultas se demoraban minutos, investigando, encontre un ariculo que hablaba de ello , pero desafortunadamente no en acuerdo donde lo lei pero te puedo resumir que el problema consistia en la definicion de los indices,
porque si en las condiciones del where no existe el indice exacto que permita su busqueda, lo que hace el motor es generar un indice temporal, y es alli donde esta la demora.
Ejemplo
select * from tabla where fecha=mfecha and numero=mNumero and estado='c'

debes tener un indice para la fecha otro para el numero y otro para el estado

y como te comentan es cuestion de probar y probar
Responder Con Cita
  #9  
Antiguo 21-11-2005
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Gracias amigo por tu respuesta

Les comento que me decidi por hacer un SP que de alguna manera se supero la velocidad pero no en mayor cosa , seguire probando pero tambien lei que si uno crea demasiados indices el Insert tambien se hace lento

El problema parece tambien en la vista :-) (salvo que este equivocado las vistas son una solucion y a la vez un problema , Tambien cuando se realizan agrupaciones por nombres (caracteres) y algunas cosas mas

Pero probare con indices aunque las tablas que tengo y las uniones que hago tienen indices (algunas son indices primarios )
__________________
IVAND
Responder Con Cita
  #10  
Antiguo 29-06-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
gabrielkc Va por buen camino
Saludos

Alguna vez tube un problema parecido en un select con varios SUM, cuando unia las primeras dos tablas con una tercera se incrementaba escandalosamente el tiempo de la consulta. Haciendo pruebas me di cuenta que la tercera tabla generaba tuplas con campos en null, y al cuando firebird trata de sumar ese Null al resultado del SUM al no poder pierde algo de tiempo (supongo que cachando la excepcion) y luego se sigue con el siguiente registro, hacer esto en miles de registros le lleva una cantidad extraordinaria de tiempo.

No se si sea tu caso (porque yo usaba LEFT JOIN) pero si no para ti (hace 2 años de tu pregunta :P) espero a alguien le sirva
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


La franja horaria es GMT +2. Ahora son las 08:20:02.


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