Ver Mensaje Individual
  #1  
Antiguo 21-06-2007
Gregory Mazon Gregory Mazon is offline
Miembro
 
Registrado: jun 2003
Posts: 22
Reputación: 0
Gregory Mazon Va por buen camino
Unhappy Ayuda con consulta lenta, lenta, lenta

Hola foro, por lo regular no pregunto por que casi todo lo encuentro en las busquedas pero esta ocasion si necesito de su ayuda. Espero me puedan ayudar

Trabajo con D7 Interbase 6 y utilizo componentes IBX

Estoy realizando un sistema para una cadena de tiendas, en donde tengo un reporte de ventas x articulo, todo iba bien pero con el tiempo el reporte se tarda 10 MINUTOS en mostrarlo. Este reporte debe de mostrar cuantos articulos se han vendido en toda la cadena en un rango de fechas, para este reporte hago una consulta sobre una vista en donde se sacan datos de 2 tablas basicamente detalle y maestro

mi vista es la siguiente:
Código SQL [-]
CREATE VIEW VDETALLE(
    IDTIENDA,
    IDREFER,
    IDARTICULO,
    FECHA,
    REFER,
    CANTIDAD,
    PRECIO,
    COSTO,
    DESCUENTO,
    DESCUENTOGRAL,
    PVNETO)
AS
select  d.idtienda, d.idrefer, d.idarticulo, m.fecha, m.refer,
d.cantidad, d.precio, d.costo, d.descuento, m.Descuento,
d.Precio * (1 - (100-(100 * (100-d.Descuento)/100) * (100-m.Descuento)/100) /100)
from detalle d
Left join maestro m on m.idTienda = d.idtienda and m.idRefer = d.idRefer;

La consulta que estoy realizando es:
Código SQL [-]
Select sum(d.Cantidad) Cantidad, sum(d.cantidad*d.pvNeto) Venta,
sum(d.cantidad * d.costo) Costo, d.idarticulo
from vDetalle d
Where d.fecha between :wDate1 and :wDate2 
Group by d.idArticulo

Código:
 
Tabla Maestro:
  idTienda       Integer                          (llave primaria)
  idRefer        Integer                           (llave primaria) 
  Fecha          Date
  Refer          Char(10)
  Nombre         VarChar(70)
  Impuesto       Numeric    12   2
  Importe        Numeric    12   2
  Costo          Numeric    12   2
  Unidades       Integer
  Descuento      Numeric    5  2

Tabla detalle:
   idTienda      Integer               (llave primaria)
   idRefer       Integer                (llave primaria)
   idArticulo    Integer                (llave primaria)
   Cantidad      Integer
   precio         Numeric   10    2
   costo         Numeric   10    2
   Descuento     Numeric    5    2
Nota: La tabla maestro tiene cerca de 2,000,000 de registros y la de detalle tiene aprox. 3,300,000 registros, la DB mide 1.3Gb y esta en un servidor windows 2000 server con 1Gb en RAM y se conectan unos 120 usuarios simultaneamente. Lo mas importante en la tabla de detalle se insertan unos 30,000 registros al dia

Cualquier sugerencia se los agradece y de antemano muchas gracias
Responder Con Cita