Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
Sorry Chris... a little slower... esdc= EXPLAIN ANALYZE SELECT cont_contenido.id_contenido ,cont_contenido.pertenece_premium ,cont_contenido.Titulo_esp as v_sufix ,cont_contenido.url_contenido ,cont_contenido.tipo_acceso ,cont_contenido.id_sbc ,cont_contenido.cant_vistos ,cont_contenido.cant_votos ,cont_contenido.puntaje_total ,cont_contenido.id_contenido_padre ,juegos_config.imagen_tapa_especial ,juegos_config.info_general_esp as info_general ,juegos_config.ayuda ,juegos_config.tips_tricks_esp as tips_tricks ,juegos_config.mod_imagen_tapa_especial ,cont_publicacion.fecha_publicacion as fecha_publicacion ,cont_publicacion.generar_Vainilla FROM cont_contenido ,juegos_config ,cont_publicacion WHERE cont_contenido.id_instalacion= 2 AND cont_contenido.id_sbc = 619 AND cont_contenido.id_tipo = 2 AND cont_contenido.id_instalacion = juegos_config.id_instalacion AND cont_contenido.id_contenido = juegos_config.id_contenido AND upper(cont_publicacion.generar_Vainilla) = 'S' AND cont_publicacion.id_instalacion = cont_contenido.id_instalacion AND cont_publicacion.id_contenido = cont_contenido.id_contenido AND cont_publicacion.fecha_publicacion = (SELECT cp1.fecha_publicacion FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla ORDER BY fecha_publicacion LIMIT 1) ORDER BY cont_publicacion.fecha_publicacion desc LIMIT 10 OFFSET 0 ; QUERY PLAN --- Limit (cost=9.75..9.76 rows=1 width=479) (actual time=465085.25..465085.27 rows=8 loops=1) - Sort (cost=9.75..9.76 rows=1 width=479) (actual time=465085.23..465085.24 rows=8 loops=1) Sort Key: cont_publicacion.fecha_publicacion - Merge Join (cost=9.73..9.74 rows=1 width=479) (actual time=210743.83..465083.31 rows=8 loops=1) Merge Cond: ((outer.id_instalacion = inner.id_instalacion) AND (outer.id_contenido = inner.id_contenido)) - Nested Loop (cost=0.00..284756.79 rows=1 width=367) (actual time=8319.87..464981.68 rows=40 loops=1) Join Filter: ((inner.id_contenido = outer.id_contenido) AND (inner.id_instalacion = outer.id_instalacion)) - Index Scan using jue_conf_pk on juegos_config (cost=0.00..12.19 rows=40 width=332) (actual time=52.93..142.31 rows=40 loops=1) - Seq Scan on cont_publicacion (cost=0.00..7118.60 rows=1 width=35) (actual time=51.79..11617.12 rows=97 loops=40) Filter: ((upper((generar_vainilla)::text) = 'S'::text) AND (fecha_publicacion = (subplan))) SubPlan - Limit (cost=15.85..15.85 rows=1 width=8) (actual time=25.86..25.86 rows=1 loops=17880) - Sort (cost=15.85..15.86 rows=1 width=8) (actual time=25.82..25.82 rows=2 loops=17880) Sort Key: fecha_publicacion - Seq Scan on cont_publicacion cp1 (cost=0.00..15.84 rows=1 width=8) (actual time=10.68..25.32 rows=7 loops=17880) Filter: ((id_instalacion = $0) AND (id_contenido = $1) AND (generar_vainilla = $2)) - Sort (cost=9.73..9.74 rows=3 width=112) (actual time=94.91..94.93 rows=8 loops=1) Sort Key: cont_contenido.id_instalacion, cont_contenido.id_contenido - Seq Scan on cont_contenido (cost=0.00..9.70 rows=3 width=112) (actual time=21.70..92.96 rows=8 loops=1) Filter: ((id_instalacion = 2::numeric) AND (id_sbc = 619::numeric) AND (id_tipo = 2::numeric)) Total runtime: 465088.66 msec (21 rows) -Mensaje original- De: Christopher Browne [mailto:[EMAIL PROTECTED] Enviado el: viernes, 01 de agosto de 2003 18:27 Para: Fernando Papa CC: [EMAIL PROTECTED] Asunto: Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec I'd point at the following as being a sterling candidate for being a cause of this being slow... AND cont_publicacion.fecha_publicacion = (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla) May I suggest changing it to: AND cont_publicacion.fecha_publicacion = (SELECT cp1
Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
Hi Josh... a little worse time: EXPLAIN ANALYZE SELECT cont_contenido.id_contenido ,cont_contenido.pertenece_premium ,cont_contenido.Titulo_esp as v_sufix ,cont_contenido.url_contenido ,cont_contenido.tipo_acceso ,cont_contenido.id_sbc ,cont_contenido.cant_vistos ,cont_contenido.cant_votos ,cont_contenido.puntaje_total ,cont_contenido.id_contenido_padre ,juegos_config.imagen_tapa_especial ,juegos_config.info_general_esp as info_general ,juegos_config.ayuda ,juegos_config.tips_tricks_esp as tips_tricks ,juegos_config.mod_imagen_tapa_especial ,cont_publicacion.fecha_publicacion as fecha_publicacion ,cont_publicacion.generar_Vainilla FROM cont_contenido ,juegos_config ,cont_publicacion WHERE cont_contenido.id_instalacion= 2 AND cont_contenido.id_sbc = 619 AND cont_contenido.id_tipo = 2 AND cont_contenido.id_instalacion = juegos_config.id_instalacion AND cont_contenido.id_contenido = juegos_config.id_contenido AND upper(cont_publicacion.generar_Vainilla) = 'S' AND cont_publicacion.id_instalacion = cont_contenido.id_instalacion AND cont_publicacion.id_contenido = cont_contenido.id_contenido AND EXISTS (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla HAVING max(cp1.fecha_publicacion) = cont_publicacion.fecha_publicacion) ORDER BY cont_publicacion.fecha_publicacion desc LIMIT 10 OFFSET 0 ; QUERY PLAN - Limit (cost=9.75..9.76 rows=1 width=479) (actual time=449760.88..449760.91 rows=8 loops=1) - Sort (cost=9.75..9.76 rows=1 width=479) (actual time=449760.87..449760.88 rows=8 loops=1) Sort Key: cont_publicacion.fecha_publicacion - Merge Join (cost=9.73..9.74 rows=1 width=479) (actual time=202257.20..449759.00 rows=8 loops=1) Merge Cond: ((outer.id_instalacion = inner.id_instalacion) AND (outer.id_contenido = inner.id_contenido)) - Nested Loop (cost=0.00..284556.86 rows=1 width=367) (actual time=7794.28..449741.85 rows=40 loops=1) Join Filter: ((inner.id_contenido = outer.id_contenido) AND (inner.id_instalacion = outer.id_instalacion)) - Index Scan using jue_conf_pk on juegos_config (cost=0.00..12.19 rows=40 width=332) (actual time=0.43..8.12 rows=40 loops=1) - Seq Scan on cont_publicacion (cost=0.00..7113.60 rows=1 width=35) (actual time=24.10..11239.67 rows=97 loops=40) Filter: ((upper((generar_vainilla)::text) = 'S'::text) AND (subplan)) SubPlan - Aggregate (cost=15.85..15.85 rows=1 width=8) (actual time=25.03..25.03 rows=0 loops=17880) Filter: (max(fecha_publicacion) = $3) - Seq Scan on cont_publicacion cp1 (cost=0.00..15.84 rows=1 width=8) (actual time=10.51..24.85 rows=7 loops=17880) Filter: ((id_instalacion = $0) AND (id_contenido = $1) AND (generar_vainilla = $2)) - Sort (cost=9.73..9.74 rows=3 width=112) (actual time=10.49..10.52 rows=8 loops=1) Sort Key: cont_contenido.id_instalacion, cont_contenido.id_contenido - Seq Scan on cont_contenido (cost=0.00..9.70 rows=3 width=112) (actual time=0.59..8.07 rows=8 loops=1) Filter: ((id_instalacion = 2::numeric) AND (id_sbc = 619::numeric) AND (id_tipo = 2::numeric)) Total runtime: 449765.69 msec (20 rows) -Mensaje original- De: Josh Berkus [mailto:[EMAIL PROTECTED] Enviado el: viernes, 01 de agosto de 2003 18:32 Para: Christopher Browne; Fernando Papa CC: [EMAIL PROTECTED] Asunto: Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec Fernando, AND cont_publicacion.fecha_publicacion = (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla) Or event changing it to: AND EXISTS (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla HAVING max(cp1.fecha_publicacion) = cont_publicacion.fecha_publicacion) -- -Josh Berkus Aglio Database Solutions San Francisco
Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
I create the index, but doesn't help too much: QUERY PLAN - Limit (cost=9.75..9.76 rows=1 width=479) (actual time=486421.35..486421.38 rows=8 loops=1) - Sort (cost=9.75..9.76 rows=1 width=479) (actual time=486421.33..486421.34 rows=8 loops=1) Sort Key: cont_publicacion.fecha_publicacion - Merge Join (cost=9.73..9.74 rows=1 width=479) (actual time=220253.76..486420.35 rows=8 loops=1) Merge Cond: ((outer.id_instalacion = inner.id_instalacion) AND (outer.id_contenido = inner.id_contenido)) - Nested Loop (cost=0.00..1828.35 rows=1 width=367) (actual time=8347.78..486405.02 rows=40 loops=1) Join Filter: ((inner.id_contenido = outer.id_contenido) AND (inner.id_instalacion = outer.id_instalacion)) - Index Scan using jue_conf_pk on juegos_config (cost=0.00..12.19 rows=40 width=332) (actual time=0.23..6.73 rows=40 loops=1) - Index Scan using idx_generar_vainilla_ci on cont_publicacion (cost=0.00..45.39 rows=1 width=35) (actual time=56.01..12156.48 rows=97 loops=40) Index Cond: (upper((generar_vainilla)::text) = 'S'::text) Filter: (fecha_publicacion = (subplan)) SubPlan - Aggregate (cost=15.84..15.84 rows=1 width=8) (actual time=27.03..27.03 rows=1 loops=17880) - Seq Scan on cont_publicacion cp1 (cost=0.00..15.84 rows=1 width=8) (actual time=11.21..26.86 rows=7 loops=17880) Filter: ((id_instalacion = $0) AND (id_contenido = $1) AND (generar_vainilla = $2)) - Sort (cost=9.73..9.74 rows=3 width=112) (actual time=9.28..9.32 rows=8 loops=1) Sort Key: cont_contenido.id_instalacion, cont_contenido.id_contenido - Seq Scan on cont_contenido (cost=0.00..9.70 rows=3 width=112) (actual time=0.47..7.48 rows=8 loops=1) Filter: ((id_instalacion = 2::numeric) AND (id_sbc = 619::numeric) AND (id_tipo = 2::numeric)) Total runtime: 486445.19 msec (20 rows) -Mensaje original- De: Mendola Gaetano [mailto:[EMAIL PROTECTED] Enviado el: sábado, 02 de agosto de 2003 7:36 Para: [EMAIL PROTECTED] CC: Fernando Papa Asunto: Re: I can't wait too much: Total runtime 432478.44 msec From: Fernando Papa [EMAIL PROTECTED] AND upper(cont_publicacion.generar_Vainilla) = 'S' Filter: ((upper((generar_vainilla)::text) = 'S'::text) AND (fecha_publicacion = (subplan))) using a functional index on this field should help create index idx_generar_vainilla_ci on cont_publicacion ( upper(generar_Vainilla) ) Regards Gaetano Mendola ---(end of broadcast)--- TIP 2: you can get off all lists at once with the unregister command (send unregister YourEmailAddressHere to [EMAIL PROTECTED])
Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
Title: Mensaje Hi Volker!!! I think you're right. Look at times: QUERY PLAN ---Limit (cost=23.37..23.37 rows=1 width=487) (actual time=2245.61..2245.61 rows=0 loops=1) - Sort (cost=23.37..23.37 rows=1 width=487) (actual time=2245.60..2245.60 rows=0 loops=1) Sort Key: cont_publicacion.fecha_publicacion - Nested Loop (cost=23.33..23.36 rows=1 width=487) (actual time=2244.10..2244.10 rows=0 loops=1) Join Filter: ("outer".fecha_publicacion = "inner".max_pub) - Merge Join (cost=9.73..9.74 rows=1 width=479) (actual time=918.73..1988.43 rows=16 loops=1) Merge Cond: (("outer".id_instalacion = "inner".id_instalacion) AND ("outer".id_contenido = "inner".id_contenido)) - Nested Loop (cost=0.00..409.35 rows=1 width=367) (actual time=35.44..1967.20 rows=82 loops=1) Join Filter: (("inner".id_contenido = "outer".id_contenido) AND ("inner".id_instalacion = "outer".id_instalacion)) - Index Scan using jue_conf_pk on juegos_config (cost=0.00..12.19 rows=40 width=332) (actual time=0.42..6.73 rows=40 loops=1) - Index Scan using idx_generar_vainilla_ci on cont_publicacion (cost=0.00..9.90 rows=2 width=35) (actual time=0.20..35.19 rows=447 loops=40) Index Cond: (upper((generar_vainilla)::text) = 'S'::text) - Sort (cost=9.73..9.74 rows=3 width=112) (actual time=10.42..10.48 rows=15 loops=1) Sort Key: cont_contenido.id_instalacion, cont_contenido.id_contenido - Seq Scan on cont_contenido (cost=0.00..9.70 rows=3 width=112) (actual time=0.57..8.11 rows=8 loops=1) Filter: ((id_instalacion = 2::numeric) AND (id_sbc = 619::numeric) AND (id_tipo = 2::numeric)) - Subquery Scan a (cost=13.60..13.60 rows=1 width=8) (actual time=15.89..15.90 rows=1 loops=16) - Aggregate (cost=13.60..13.60 rows=1 width=8) (actual time=15.87..15.88 rows=1 loops=16) - Seq Scan on cont_publicacion cp1 (cost=0.00..12.48 rows=448 width=8) (actual time=0.05..11.62 rows=448 loops=16)Total runtime: 2250.92 msec(20 rows) The problem was the subquery, no doubt. -Mensaje original-De: Volker Helm [mailto:[EMAIL PROTECTED] Enviado el: lunes, 04 de agosto de 2003 11:45Para: Fernando PapaAsunto: AW: [PERFORM] I can't wait too much: Total runtime 432478.44 msec Hi, just use the subquery as inline-View an join the tables: SELECT cont_contenido.id_contenido,cont_contenido.pertenece_premium,cont_contenido.Titulo_esp as v_sufix ,cont_contenido.url_contenido,cont_contenido.tipo_acceso,cont_contenido.id_sbc,cont_contenido.cant_vistos,cont_contenido.cant_votos ,cont_contenido.puntaje_total ,cont_contenido.id_contenido_padre ,juegos_config.imagen_tapa_especial ,juegos_config.info_general_esp as info_general ,juegos_config.ayuda ,juegos_config.tips_tricks_esp as tips_tricks ,juegos_config.mod_imagen_tapa_especial ,cont_publicacion.fecha_publicacion as fecha_publicacion ,cont_publicacion.generar_Vainilla FROM cont_contenido ,juegos_config ,cont_publicacion ,(SELECT max(cp1.fecha_publicacion) as max_pub --change here FROM cont_publicacion cp1) a--change hereWHERE cont_contenido.id_instalacion = 2AND cont_contenido.id_sbc = 619AND cont_contenido.id_tipo = 2AND cont_contenido.id_instalacion = juegos_config.id_instalacion AND cont_contenido.id_contenido = juegos_config.id_contenido AND upper(cont_publicacion.generar_Vainilla) = 'S'AND cont_publicacion.id_instalacion = cont_contenido.id_instalacion AND cont_publicacion.id_contenido = cont_contenido.id_contenido AND cont_publicacion.fecha_publicacion =a.max_pub -- change hereORDER BY cont_publicacion.fecha_publicacion desc hope it helps, Volker Helm -Ursprüngliche Nachricht-Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]Im Auftrag von Fernando PapaGesendet: Freitag, 1. August 2003 23:17An: [EMAIL PROTECTED]Betreff: [PERFORM] I can't wait too much: Total runtime 432478.44 msec Hi all! Really I don't know what happened with this query. I'm running PG 7.3.1 on solaris, vaccumed (full) every nigth. The cardinality of each table was: cont_contenido: 97 rows juegos_config: 40 rows cont_publicacion: 446 rows not huge tables... however, this query took a lot of time to run:Total runtime: 432478.44 msecI made a explain analyze, but really I don't undertand why... esdc= explain analyzeSELECT cont_contenido.id_contenido,cont_contenido.pertenece_premium,cont_contenido.Titulo_esp as v_sufix ,cont_contenido.url_contenido,cont_contenido.tipo_acceso,cont_contenido.id_sbc,cont_contenido.cant_vistos,
Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
Err... you're right... one of us say the same thing when I show the Volker mail... -Mensaje original- De: Manfred Koizar [mailto:[EMAIL PROTECTED] Enviado el: lunes, 04 de agosto de 2003 12:17 Para: Fernando Papa CC: Volker Helm; [EMAIL PROTECTED] Asunto: Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec On Mon, 4 Aug 2003 12:02:46 -0300, Fernando Papa [EMAIL PROTECTED] wrote: FROM cont_contenido ,juegos_config ,cont_publicacion ,(SELECT max(cp1.fecha_publicacion) as max_pub --change here FROM cont_publicacion cp1) a --change here But this calculates the global maximum, not per id_instalacion, id_contenido, and generar_vainilla as in AND cont_publicacion.fecha_publicacion = (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla) Servus Manfred ---(end of broadcast)--- TIP 4: Don't 'kill -9' the postmaster
Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
From: Fernando Papa [EMAIL PROTECTED] AND upper(cont_publicacion.generar_Vainilla) = 'S' Filter: ((upper((generar_vainilla)::text) = 'S'::text) AND (fecha_publicacion = (subplan))) using a functional index on this field should help create index idx_generar_vainilla_ci on cont_publicacion ( upper(generar_Vainilla) ) Regards Gaetano Mendola ---(end of broadcast)--- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match
[PERFORM] I can't wait too much: Total runtime 432478.44 msec
Title: Mensaje Hi all! Really I don't know what happened with this query. I'm running PG 7.3.1 on solaris, vaccumed (full) every nigth. The cardinality of each table was: cont_contenido: 97 rows juegos_config: 40 rows cont_publicacion: 446 rows not huge tables... however, this query took a lot of time to run:Total runtime: 432478.44 msecI made a explain analyze, but really I don't undertand why... esdc= explain analyzeSELECT cont_contenido.id_contenido,cont_contenido.pertenece_premium,cont_contenido.Titulo_esp as v_sufix ,cont_contenido.url_contenido,cont_contenido.tipo_acceso,cont_contenido.id_sbc,cont_contenido.cant_vistos,cont_contenido.cant_votos ,cont_contenido.puntaje_total ,cont_contenido.id_contenido_padre ,juegos_config.imagen_tapa_especial ,juegos_config.info_general_esp as info_general ,juegos_config.ayuda ,juegos_config.tips_tricks_esp as tips_tricks ,juegos_config.mod_imagen_tapa_especial ,cont_publicacion.fecha_publicacion as fecha_publicacion ,cont_publicacion.generar_Vainilla FROM cont_contenido ,juegos_config ,cont_publicacion WHERE cont_contenido.id_instalacion = 2AND cont_contenido.id_sbc = 619AND cont_contenido.id_tipo = 2AND cont_contenido.id_instalacion = juegos_config.id_instalacion AND cont_contenido.id_contenido = juegos_config.id_contenido AND upper(cont_publicacion.generar_Vainilla) = 'S'AND cont_publicacion.id_instalacion = cont_contenido.id_instalacion AND cont_publicacion.id_contenido = cont_contenido.id_contenido AND cont_publicacion.fecha_publicacion = (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla) ORDER BY cont_publicacion.fecha_publicacion desc LIMIT 10OFFSET 0esdc-; QUERY PLAN -Limit (cost=8.72..8.73 rows=1 width=478) (actual time=432473.69..432473.72 rows=8 loops=1) - Sort (cost=8.72..8.73 rows=1 width=478) (actual time=432473.67..432473.68 rows=8 loops=1) Sort Key: cont_publicacion.fecha_publicacion - Merge Join (cost=8.69..8.71 rows=1 width=478) (actual time=197393.80..432471.92 rows=8 loops=1) Merge Cond: (("outer".id_instalacion = "inner".id_instalacion) AND ("outer".id_contenido = "inner".id_contenido)) - Nested Loop (cost=0.00..281713.36 rows=1 width=367) (actual time=7524.66..432454.11 rows=40 loops=1) Join Filter: (("inner".id_contenido = "outer".id_contenido) AND ("inner".id_instalacion = "outer".id_instalacion)) - Index Scan using jue_conf_pk on juegos_config (cost=0.00..12.19 rows=40 width=332) (actual time=0.39..7.81 rows=40 loops=1) - Seq Scan on cont_publicacion (cost=0.00..7042.51 rows=1 width=35) (actual time=23.64..10807.83 rows=96 loops=40) Filter: ((upper((generar_vainilla)::text) = 'S'::text) AND (fecha_publicacion = (subplan))) SubPlan - Aggregate (cost=15.79..15.79 rows=1 width=8) (actual time=24.16..24.16 rows=1 loops=17800) - Seq Scan on cont_publicacion cp1 (cost=0.00..15.79 rows=1 width=8) (actual time=10.14..24.01 rows=7 loops=17800) Filter: ((id_instalacion = $0) AND (id_contenido = $1) AND (generar_vainilla = $2)) - Sort (cost=8.69..8.70 rows=3 width=111) (actual time=11.14..11.18 rows=8 loops=1) Sort Key: cont_contenido.id_instalacion, cont_contenido.id_contenido - Seq Scan on cont_contenido (cost=0.00..8.66 rows=3 width=111) (actual time=0.57..8.62 rows=8 loops=1) Filter: ((id_instalacion = 2::numeric) AND (id_sbc = 619::numeric) AND (id_tipo = 2::numeric))Total runtime: 432478.44 msec(19 rows) esdc= If I replace the subquery with a fixed date "AND cont_publicacion.fecha_publicacion = '17/01/2003'::timestamp" QUERY PLAN Limit (cost=8.72..8.73 rows=1 width=478) (actual time=797.26..797.26 rows=0 loops=1) - Sort (cost=8.72..8.73 rows=1 width=478) (actual time=797.25..797.25 rows=0 loops=1) Sort Key: cont_publicacion.fecha_publicacion - Merge Join (cost=8.69..8.71 rows=1 width=478) (actual time=796.45..796.45 rows=0 loops=1) Merge Cond: (("outer".id_instalacion = "inner".id_instalacion) AND ("outer".id_contenido = "inner".id_contenido)) - Nested Loop (cost=0.00..644.29 rows=1 width=367) (actual time=796.44..796.44 rows=0 loops=1) Join Filter: (("inner".id_contenido = "outer".id_contenido) AND ("inner".id_instalacion = "outer".id_instalacion)) - Index Scan using jue_conf_pk on juegos_config (cost=0.00..12.19 rows=40 width=332) (actual time=0.23..6.71 rows=40 loops=1) - Seq Scan on cont_publicacion (cost=0.00..15.79 rows=1 width=35) (actual time=19.70..19.70 rows=0 loops=40) Filter: ((upper((generar_vainilla)::text)
Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
I'd point at the following as being a sterling candidate for being a cause of this being slow... AND cont_publicacion.fecha_publicacion = (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla) May I suggest changing it to: AND cont_publicacion.fecha_publicacion = (SELECT cp1.fecha_publicacion FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla ORDER BY fecha_publicacion LIMIT 1) That would get rid of the aggregate that's sitting deep in the query. -- select 'cbbrowne' || '@' || 'libertyrms.info'; http://dev6.int.libertyrms.com/ Christopher Browne (416) 646 3304 x124 (land) ---(end of broadcast)--- TIP 6: Have you searched our list archives? http://archives.postgresql.org
Re: [PERFORM] I can't wait too much: Total runtime 432478.44 msec
Fernando, AND cont_publicacion.fecha_publicacion = (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla) Or event changing it to: AND EXISTS (SELECT max(cp1.fecha_publicacion) FROM cont_publicacion cp1 WHERE cp1.id_instalacion = cont_publicacion.id_instalacion AND cp1.id_contenido = cont_publicacion.id_contenido AND cp1.generar_vainilla = cont_publicacion.generar_vainilla HAVING max(cp1.fecha_publicacion) = cont_publicacion.fecha_publicacion) -- -Josh Berkus Aglio Database Solutions San Francisco ---(end of broadcast)--- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faqs/FAQ.html