Hola, soy nuevo por acá, quisiera saber si me pueden ayudar para ver que modificaciones puedo hacerle a esta consulta para que funciones mas rápido ya que como esta ahora consume mucha cpu y memoria. desde ya muchas gracias. saludos query SELECT DISTINCT t.id, emp.descripcion as contratista, fecha_etapa_cod(eh.idetapa , '12') as asignado , t.id AS calden, trabajosistemao.reclamo, tt.descripcion, oc.calle, oc.numero, s.descripcion || ' - ' || s.medida || ' - ' || s.tipo AS solado, oc.cantidad, oc.largo, oc.ancho, oc.profundidad, oc.piezas, entrecalle_siade_cod(trabajosistemao.reclamo) as entrecalle FROM ((((obracivil AS oc INNER JOIN etapahead AS eh ON oc.idetapa = eh.idetapa) INNER JOIN trabajo AS t ON eh.idtrabajo = t.id) INNER JOIN aprobacion AS ap ON ap.idetapa = eh.idetapa) INNER JOIN solado AS s ON oc.idsolado = s.idsolado) LEFT JOIN trabajosistemao ON t.id = trabajosistemao.id, empresa emp, tipotrabajo tt WHERE fecha_etapa_cod(eh.idetapa , '3') is null AND (oc.discrim)='D' AND emp.idcontratista = empresa_etapa_cod(eh.idetapa) AND tt.idtipotrabajo = idtipotrabajo_etapa_cod(eh.idetapa) AND empresa_etapa_cod(eh.idetapa) in (500189) AND fecha_etapa_cod(eh.idetapa , '12') between '2006-05-30' and '2006-06-30' --select max(fecha) from aprobacion where idetapa = $1 and idestado = $2 --INNER JOIN aprobacion AS ap ON ap.idetapa = eh.idetapa) UNION SELECT eh.idtrabajo as id, emp.descripcion as contratista, aprobacion.fecha as asignado , eh.idtrabajo as calden, trabajosistemao.reclamo, tt.descripcion, oc.calle, oc.numero, '' as solado, oc.cantidad, oc.largo, oc.ancho, oc.profundidad, oc.piezas, entrecalle_siade_cod(trabajosistemao.reclamo) as entrecalle FROM ((( trabajosistemao INNER JOIN etapahead AS eh ON trabajosistemao.id = eh.idtrabajo) LEFT JOIN obracivil AS oc ON eh.idetapa = oc.idetapa) INNER JOIN aprobacion ON eh.idetapa = aprobacion.idetapa) INNER JOIN trabajo AS t ON trabajosistemao.id = t.id, empresa emp, tipotrabajo tt WHERE (((trabajosistemao.reclamo) Is Not Null) AND ((oc.idetapa) Is Null) AND ((eh.idetapa) Not In (SELECT DISTINCT etapamecanica.idetapa FROM etapamecanica INNER JOIN aprobacion ON etapamecanica.idetapa = aprobacion.idetapa WHERE (((aprobacion.idestado)='3')))) AND ((aprobacion.idestado)='12')) AND emp.idcontratista = empresa_etapa_cod(eh.idetapa) AND tt.idtipotrabajo = idtipotrabajo_etapa_cod(eh.idetapa) AND empresa_etapa_cod(eh.idetapa) in (500189) AND aprobacion.fecha between '2006-05-30' and '2006-06-30'; Explain output *--------------- Unique (cost=193218032.67..193218032.75 rows=1 width=278) -> Sort (cost=193218032.67..193218032.67 rows=2 width=278) Sort Key: id, contratista, asignado, calden, reclamo, descripcion, calle, numero, solado, cantidad, largo, ancho, profundidad, piezas, entrecalle -> Append (cost=1707.38..193218032.66 rows=2 width=278) -> Subquery Scan "*SELECT* 1" (cost=1707.38..1707.43 rows=1 width=278) -> Unique (cost=1707.38..1707.43 rows=1 width=278) -> Sort (cost=1707.38..1707.39 rows=1 width=278) Sort Key: t.id, emp.descripcion, fecha_etapa_cod(eh.idetapa, 12::numeric), t.id, trabajosistemao.reclamo, tt.descripcion, oc.calle, oc.numero, ((((s.descripcion || ' - '::character varying) || s.medida) || ' - '::character varying) || s.tipo), oc.cantidad, oc.largo, oc.ancho, oc.profundidad, oc.piezas, entrecalle_siade_cod(trabajosistemao.reclamo) -> Nested Loop (cost=1624.89..1707.37 rows=1 width=278) Join Filter: ("inner".idtipotrabajo = idtipotrabajo_etapa_cod("outer".idetapa)) -> Nested Loop (cost=1624.89..1705.57 rows=1 width=246) Join Filter: ("inner".idcontratista = empresa_etapa_cod("outer".idetapa)) -> Nested Loop (cost=1624.89..1691.56 rows=10 width=220) -> Hash Join (cost=1624.89..1630.10 rows=10 width=192) Hash Cond: ("outer".idsolado = "inner".idsolado) -> Seq Scan on solado s (cost=0.00..3.37 rows=137 width=47) -> Hash (cost=1624.86..1624.86 rows=10 width=145) -> Nested Loop (cost=0.00..1624.86 rows=10 width=145) -> Nested Loop (cost=0.00..1609.53 rows=1 width=133) -> Nested Loop (cost=0.00..1603.66 rows=1 width=120) -> Seq Scan on etapahead eh (cost=0.00..1589.87 rows=1 width=25) Filter: ((fecha_etapa_cod(idetapa, 3::numeric) IS NULL) AND (empresa_etapa_cod(idetapa) = 500189::numeric) AND (fecha_etapa_cod(idetapa, 12::numeric) >= '2006-05-30'::date) AND (fecha_etapa_cod(idetapa, 12::numeric) <= '2006-06-30'::date)) -> Index Scan using unic_etapa_discrim_civil on obracivil oc (cost=0.00..13.75 rows=3 width=95) Index Cond: ((oc.idetapa = "outer".idetapa) AND (oc.discrim = 'D'::character varying)) -> Index Scan using trabajo_pkey on trabajo t (cost=0.00..5.85 rows=1 width=13) Index Cond: ("outer".idtrabajo = t.id) -> Index Scan using aprob_idetapa_fk on aprobacion ap (cost=0.00..15.21 rows=10 width=12) Index Cond: (ap.idetapa = "outer".idetapa) -> Index Scan using trabajosistemao_pkey on trabajosistemao (cost=0.00..5.91 rows=1 width=28) Index Cond: ("outer".id = trabajosistemao.id) -> Seq Scan on empresa emp (cost=0.00..1.14 rows=14 width=26) -> Seq Scan on tipotrabajo tt (cost=0.00..1.32 rows=32 width=32) -> Subquery Scan "*SELECT* 2" (cost=0.00..193216325.23 rows=1 width=227) -> Nested Loop (cost=0.00..193216325.23 rows=1 width=227) Join Filter: ("inner".idtipotrabajo = idtipotrabajo_etapa_cod("outer".idetapa)) -> Nested Loop (cost=0.00..193216323.43 rows=1 width=195) Join Filter: ("inner".idcontratista = empresa_etapa_cod("outer".idetapa)) -> Nested Loop (cost=0.00..193216317.31 rows=5 width=169) Join Filter: ("outer".id = "inner".id) -> Nested Loop (cost=0.00..193216290.75 rows=5 width=156) -> Nested Loop (cost=0.00..193215681.46 rows=40 width=140) Filter: ("inner".idetapa IS NULL) -> Nested Loop (cost=0.00..193214722.13 rows=40 width=53) -> Seq Scan on trabajosistemao (cost=0.00..692.51 rows=15170 width=28) Filter: (reclamo IS NOT NULL) -> Index Scan using "etapahead_idtrabajo_FK" on etapahead eh (cost=0.00..12736.64 rows=1 width=25) Index Cond: ("outer".id = eh.idtrabajo) Filter: ((empresa_etapa_cod(idetapa) = 500189::numeric) AND (subplan)) SubPlan -> Materialize (cost=11227.21..11227.21 rows=832 width=24) -> Unique (cost=8624.26..11227.21 rows=832 width=24) -> Merge Join (cost=8624.26..11206.41 rows=8322 width=24) Merge Cond: ("outer".idetapa = "inner".idetapa) -> Index Scan using etapamecanica_pkey on etapamecanica (cost=0.00..2354.51 rows=36177 width=12) -> Sort (cost=8624.26..8645.07 rows=8322 width=12) Sort Key: aprobacion.idetapa -> Seq Scan on aprobacion (cost=0.00..8082.38 rows=8322 width=12) Filter: (idestado = 3::numeric) -> Index Scan using unic_etapa_discrim_civil on obracivil oc (cost=0.00..24.01 rows=6 width=87) Index Cond: ("outer".idetapa = oc.idetapa) -> Index Scan using aprob_idetapa_fk on aprobacion (cost=0.00..15.29 rows=1 width=16) Index Cond: ("outer".idetapa = aprobacion.idetapa) Filter: ((idestado = 12::numeric) AND (fecha >= '2006-05-30'::date) AND (fecha <= '2006-06- 30'::date)) -> Index Scan using trabajo_pkey on trabajo t (cost=0.00..5.85 rows=1 width=13) Index Cond: (t.id = "outer".idtrabajo) -> Seq Scan on empresa emp (cost=0.00..1.14 rows=14 width=26) -> Seq Scan on tipotrabajo tt (cost=0.00..1.32 rows=32 width=32) ------------------------------------------------------------------------ Conectate a Internet Gratis de Argentina.Com