Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ayuda con consulta lenta, lenta, lenta (https://www.clubdelphi.com/foros/showthread.php?t=45059)

Gregory Mazon 27-06-2007 00:13:29

Cita:

Empezado por Delfino
Porque en la tabla maestro la clave primaria esta compuesta por dos campos? estas cosas se hacian en tiempos de los dbf,

La razon es por que el sistema esta instalado en sucursales remotas, cada una con su propia BD y a determinado tiempo se replica la informacion a la BD del server, cada una de las sucursales tiene su propio IDTIENDA y para que nota de venta tengo su respectivo ID, por eso la clave compuesta

Cita:

Empezado por seara2005
Yo no soy experto en estas materias, pero la lógica y mi criterio me dicen que si hoy estas analizando como reducir de 8 a 4 o 3 min la consulta, en un año estarás viendo como reducirla de 20 a 10, etc. por tanto te recomendaría que acotaras la información a procesar para las consultas frecuentes

aqui el problema es que no existen consultas frecuentes, sino que las consultas pueden ser dia vs. dia, mes vs. mes, semana vs. semana, como al gerente de ventas se le ocurra, no puedo poner un saldo inicial o saldo final. ahorita lo que estan comprarando es mes vs. mes. (ej. 15/May/07 vs. 15/Jun/07)

Haciendo otra prueba a la tabla detalle le meti el campo FECHA que es el que tengo en la tabla maestro y por medio del cual estoy haciendo el WHERE.
Al hacer mi consulta esta forma me resulta en solo 30 segundos. Aqui es en donde tengo mi problema, pero entonces de que forma deberia de hacer mi consulta?, o para que mis consultas sean rapidas debo de incluir en las tablas de detalle los campos del maestro para no tener que hacer join's?, o cual es la manera de realizar una consulta detalle-maestro?

Gregory Mazon 27-06-2007 08:43:04

Ya quedo
 
Muchas gracias, a todos los que leyeron este hilo y en especial a los que me aconsejaron

Despues de estarme peleando con esta consulta, resulta que mi GRAN ERROR estaba en la vista, todo quedo resuelto con una simple y sencilla consulta:

Código SQL [-]
Select d.idArticulo, sum(d.cantidad) pzas,
sum(d.cantidad * (d.precio * (1 - (100-(100 * (100-d.Descuento)/100) * (100-R.Descuento)/100) /100))) vta,
sum(d.cantidad * d.costo) cto
from de_rem d
join remision r on r.idtienda = d.idTienda and r.idRemision = d.idRemision
Where (r.Fecha between :wDate1 and :wDate2) and r.activo = 1
group by d.idArticulo

mi consulta me muestra resultados con solo 40 segundos, listo me ahora si me voy a descansar, pero antes de eso vuelvo a reinterar GRACIAS:)

Delfino 27-06-2007 09:56:38

Cita:

debo de incluir en las tablas de detalle los campos del maestro para no tener que hacer join's?
Para eso se invento el modelo entidad/relacion, para no tener q repetir informacion en mas de un sitio, los joins son instantaneos si la consulta esta bien hecha y indexada aunque sea sobre millones de registros,
Cita:

resulta que mi GRAN ERROR estaba en la vista,
Era evidente, me extraña q nadie de nosotros se diera cuenta, ahora el optimizador hace q se ejecute rapido, se ejecutaria igual de rapido aunque vaya incrementandose el numero de registros..


La franja horaria es GMT +2. Ahora son las 13:48:39.

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