2009/1/21 Linos <i...@linos.es>: > Emanuel Calvo Franco escribió: >> >> 2009/1/20 Linos <i...@linos.es>: > gracias por echarme un cable emanuel, si te he entendido bien tendria > que usar lo que me pegas en el mail como la subquery para el left join, no? > si es asi no me funciona porque si intento referenciar en la subquery con la > que hago el left join una de las columnas que solicito en el select me da > postgresql este mensaje. > > HINT: There is an entry for table "lin", but it cannot be referenced from > this part of the query. >
Completaste la subquery? fijate que faltan campos. De ultima repetilos en la última. No debería tirar este error. Además... a cual de las consultas se lo aplicaste? > Si puediera hacer eso seria perfecto por que el limit de la subquery me > daria el resultado correcto, el problema es q como no puedo hacer un where > dentro del left join indicando la referencia, la primera oferta que me da el > limit no coincide con el de esa referencia, respecto al explain te pego aqui > el de la query que tarda mas (la q usa un left join). Hay algunas tablas mas > que las que vienen en el mail inicial que envie (como explique en el primer > mail limpie parte de la query para que se viera el problema claramente), las > tablas implicadas son: > > lin ticket_linea > cab ticket_cabecera > art articulo > mo modelo > ofe oferta > tie_ofe t109.modelo_oferta > l_ofe oferta dentro del where de la subquery > l_tie_ofe t109.modelo_oferta dentro del where de la subquery > > Sort (cost=373239.03..373255.66 rows=6650 width=67) (actual > time=7364.919..7366.843 rows=10685 loops=1) > Sort Key: lin.id_ticket, lin.linea_id > Sort Method: quicksort Memory: 1532kB > -> Hash Join (cost=367952.80..372816.79 rows=6650 width=67) (actual > time=7230.655..7354.893 rows=10685 loops=1) > Hash Cond: (lin.id_ticket = cab.ticket_id) > -> Hash Left Join (cost=366683.70..371289.99 rows=6650 width=67) > (actual time=7207.268..7312.508 rows=10685 loops=1) > Hash Cond: (mo.modelo_id = tie_ofe.id_modelo) > -> Nested Loop (cost=1983.31..6539.39 rows=6650 width=37) > (actual time=45.763..126.466 rows=10685 loops=1) > -> Hash Join (cost=1983.31..4120.03 rows=6650 width=28) > (actual time=45.747..82.802 rows=10685 loops=1) > Hash Cond: (lin.id_articulo = art.articulo_id) > -> Seq Scan on ticket_linea lin > (cost=0.00..1987.09 rows=6650 width=26) (actual time=0.008..24.335 > rows=10685 loops=1) > Filter: ((modificado_manual IS TRUE) AND > (id_oferta IS NULL)) > -> Hash (cost=1179.25..1179.25 rows=64325 > width=10) (actual time=45.707..45.707 rows=64328 loops=1) > -> Seq Scan on articulo art > (cost=0.00..1179.25 rows=64325 width=10) (actual time=0.005..21.227 > rows=64328 loops=1) > -> Index Scan using modelo_pkey on modelo mo > (cost=0.00..0.35 rows=1 width=13) (actual time=0.002..0.003 rows=1 > loops=10685) > Index Cond: (mo.modelo_id = art.id_modelo) > -> Hash (cost=364696.54..364696.54 rows=308 width=38) (actual > time=7161.484..7161.484 rows=48711 loops=1) > -> Hash Join (cost=4.70..364696.54 rows=308 width=38) > (actual time=0.272..7132.091 rows=48711 loops=1) > Hash Cond: (((subplan) = ofe.oferta_id) AND > (tie_ofe.id_oferta = ofe.oferta_id)) > -> Seq Scan on modelo_oferta tie_ofe > (cost=0.00..889.99 rows=61599 width=8) (actual time=0.004..14.465 rows=61212 > loops=1) > -> Hash (cost=3.08..3.08 rows=108 width=34) > (actual time=0.105..0.105 rows=108 loops=1) > -> Seq Scan on oferta ofe (cost=0.00..3.08 > rows=108 width=34) (actual time=0.004..0.053 rows=108 loops=1) > SubPlan > -> Limit (cost=11.79..11.80 rows=1 width=8) > (actual time=0.063..0.064 rows=1 loops=109923) > -> Sort (cost=11.79..11.80 rows=1 > width=8) (actual time=0.063..0.063 rows=1 loops=109923) > Sort Key: l_ofe.prioridad, > l_ofe.oferta_id > Sort Method: quicksort Memory: 17kB > -> Hash Join (cost=8.29..11.78 > rows=1 width=8) (actual time=0.043..0.059 rows=2 loops=109923) > Hash Cond: (l_ofe.oferta_id = > l_tie_ofe.id_oferta) > -> Seq Scan on oferta l_ofe > (cost=0.00..3.08 rows=108 width=8) (actual time=0.001..0.024 rows=108 > loops=109923) > -> Hash (cost=8.27..8.27 > rows=1 width=4) (actual time=0.005..0.005 rows=2 loops=109923) > -> Index Scan Backward > using modelo_oferta_pkey on modelo_oferta l_tie_ofe (cost=0.00..8.27 rows=1 > width=4) (actual time=0.003..0.004 rows=2 loops=109923) > Index Cond: ($0 = > id_modelo) > -> Hash (cost=812.38..812.38 rows=36538 width=4) (actual > time=23.366..23.366 rows=36547 loops=1) > -> Seq Scan on ticket_cabecera cab (cost=0.00..812.38 > rows=36538 width=4) (actual time=0.006..11.571 rows=36547 loops=1) > Total runtime: 7369.879 ms > > > De cual de las consultas es este analyze? Version de Postgres? Sistema operativo? -- Emanuel Calvo Franco ArPUG / AOSUG Member Postgresql Support & Admin -- TIP 2: puedes desuscribirte de todas las listas simultáneamente (envía "unregister TuDirecciónDeCorreo" a majord...@postgresql.org)