
Query Muy Lento.. ayuda
Publicado por Claudia (3 intervenciones) el 11/04/2008 00:03:14
A ver chicos si sois tan lindos de ayudarme:
1. Tengo el siguiente Query en un rango de fecha que saca las ventas de una lista de productos:
Select p.cte, c.nom, substring(p.ven ,1,3)+' '+substring(v.nom,1,21), c.seg_mer ,pd.sub_alm, pd.cve_art, pd.des, p.fec_fac, (pd.ped-pd.dev)*pd.precio
,(pd.ped-pd.dev)*pd.costo, (((pd.ped-pd.dev)*pd.precio - (pd.ped-pd.dev)*pd.costo)/((pd.ped-pd.dev)*pd.precio+.01))*100
From pedped p (index = pedped13), peddet pd (index = peddet4), cxccli c, pedven v
Where p.fec_ped between '20080101' and '20080130'
and p.cia ='MAS'
and p.status Not IN ('TICN','FACN','FAD')
and pd.cia = p.cia
and pd.alm = p.alm
and pd.cve = p.num
and pd.serie = p.serie
and pd.cve_art in (select codigo from MAXIMA_PRODUCTS_CONQUEST)
and v.cve = p.ven
and c.cia = p.cia
and c.cve = p.cte
order by substring(p.ven ,1,3)+' '+substring(v.nom,1,21)
El reporte demora un poco pero sale bien (al menos eso creíamos), como se supone que es un reporte de venta de productos ya facturados me dí cuenta que donde está el WHERE hace referencia al campo fec_ped (fecha de pedido) de la tabla pedped y esto no es correcto debe ser al campo fec_fac (fecha de facturación); pero si cambio la linea del WHERE por : Where p.fec_fac between '20080101' and '20080130' se demora el triple y el programa manda el mensaje "Tiempo de Espera Agotado". Como es posible que solo por el hecho de cambiar un campo se demore tanto, al regresarlo como estaba funciona bien, lo vuelvo a cambiar por el campo fec_fac y no sale help !!!!
Por favor ayudenme. De antemano muchas gracias
Claudia C.A.
1. Tengo el siguiente Query en un rango de fecha que saca las ventas de una lista de productos:
Select p.cte, c.nom, substring(p.ven ,1,3)+' '+substring(v.nom,1,21), c.seg_mer ,pd.sub_alm, pd.cve_art, pd.des, p.fec_fac, (pd.ped-pd.dev)*pd.precio
,(pd.ped-pd.dev)*pd.costo, (((pd.ped-pd.dev)*pd.precio - (pd.ped-pd.dev)*pd.costo)/((pd.ped-pd.dev)*pd.precio+.01))*100
From pedped p (index = pedped13), peddet pd (index = peddet4), cxccli c, pedven v
Where p.fec_ped between '20080101' and '20080130'
and p.cia ='MAS'
and p.status Not IN ('TICN','FACN','FAD')
and pd.cia = p.cia
and pd.alm = p.alm
and pd.cve = p.num
and pd.serie = p.serie
and pd.cve_art in (select codigo from MAXIMA_PRODUCTS_CONQUEST)
and v.cve = p.ven
and c.cia = p.cia
and c.cve = p.cte
order by substring(p.ven ,1,3)+' '+substring(v.nom,1,21)
El reporte demora un poco pero sale bien (al menos eso creíamos), como se supone que es un reporte de venta de productos ya facturados me dí cuenta que donde está el WHERE hace referencia al campo fec_ped (fecha de pedido) de la tabla pedped y esto no es correcto debe ser al campo fec_fac (fecha de facturación); pero si cambio la linea del WHERE por : Where p.fec_fac between '20080101' and '20080130' se demora el triple y el programa manda el mensaje "Tiempo de Espera Agotado". Como es posible que solo por el hecho de cambiar un campo se demore tanto, al regresarlo como estaba funciona bien, lo vuelvo a cambiar por el campo fec_fac y no sale help !!!!
Por favor ayudenme. De antemano muchas gracias
Claudia C.A.
Valora esta pregunta


0