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,cont_contenido.cant_votos ,cont_contenido.puntaje_total ,cont_contenido.id_contenido_padre
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
[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] Similar querys, better execution time on worst execution plan
-Mensaje original- De: SZUCS Gábor [mailto:[EMAIL PROTECTED] Enviado el: jueves, 26 de junio de 2003 7:31 Para: [EMAIL PROTECTED] Asunto: Re: [PERFORM] Similar querys, better execution time on worst execution plan Fernando, 1. Try EXPLAIN ANALYZE. Cost alone isn't an absolute measure. I think it's only to see which parts of the query are expected to be slowest. However, EXP ANA will give you exact times in msec (which effectively means it executes the query). Ok, yes, I did only explay because I run several times the query and get avg. run time. but it's true, it's better to do EXP ANA. 2. I think calling upper() for each row costs more than direct comparison, but not sure It's the only answer than I can found... maybe do a lot of uppers and then compare will be too much than compare with 2 conditions... 3. Notice that there are seq scans with filter conditions like id_instalacion = 2::numeric Do you have indices on id_instalacion, which seems to be a numeric field? if so, try casting the constant expressions in the query to numeric so that postgresql may find the index. If you don't have such indices, it may be worth to create them. (I guess you only have it on the table aliased with c, since it does an index scan there. Yes, we have index on id_instalacion, but now we have only one instalation, so the content of these field, in the 99% of the rows, it's 2. I think in this case it's ok to choose seq scan. 4. another guess may be indices on (id_instalacion, activo), or, if activo has few possible values (for example, it may be only one of three letters, say, 'S', 'A' or 'K'), partial indices like: CREATE INDEX cont_sbc_id_ins_S ON cont_sbc (id_instalacion) WHERE activo in ('S', 's'); CREATE INDEX cont_sbc_id_ins_A ON cont_sbc (id_instalacion) WHERE activo in ('A', 'a'); CREATE INDEX cont_sbc_id_ins_K ON cont_sbc (id_instalacion) WHERE activo in ('K', 'k'); I need to recheck about the quality of active field. Really I don't know if I found a lot of 'S', a lot of 'N', maybe we will have 50%/50% of 'S' or 'N'. This will be important to define index. Thanks for your answer. ---(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