Re: I can't wait too much: Total runtime 432478.44 msec - Mailing list pgsql-performance

From Manfred Koizar
Subject Re: I can't wait too much: Total runtime 432478.44 msec
Date
Msg-id i2psivsr6r78efetf3fcb3h5h6k9ruc8fc@4ax.com
Whole thread Raw
In response to I can't wait too much: Total runtime 432478.44 msec  ("Fernando Papa" <fpapa@claxson.com>)
Responses Re: I can't wait too much: Total runtime 432478.44 msec  (Manfred Koizar <mkoi-pg@aon.at>)
List pgsql-performance
On Fri, 1 Aug 2003 18:17:17 -0300, "Fernando Papa" <fpapa@claxson.com>
wrote:
> 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)

If certain uniqueness conditions are met, the Postgres specific
DISTINCT ON clause could help totally eliminating the subselect:

SELECT DISTINCT ON (
                    cp.id_instalacion,
                    cp.id_contenido,
                    cp.generar_vainilla,
                    cp.fecha_publicacion
                   )
  cc.id_contenido
 ,cc.pertenece_premium
 ,cc.Titulo_esp as v_sufix
 ,cc.url_contenido
 ,cc.tipo_acceso
 ,cc.id_sbc
 ,cc.cant_vistos
 ,cc.cant_votos
 ,cc.puntaje_total
 ,cc.id_contenido_padre
 ,jc.imagen_tapa_especial
 ,jc.info_general_esp as info_general
 ,jc.ayuda
 ,jc.tips_tricks_esp as tips_tricks
 ,jc.mod_imagen_tapa_especial
 ,cp.fecha_publicacion as fecha_publicacion
 ,cp.generar_Vainilla
 FROM
 cont_contenido cc
 ,juegos_config jc
 ,cont_publicacion cp
WHERE
 cc.id_instalacion        = 2
 AND cc.id_sbc           = 619
 AND cc.id_tipo           = 2
 AND cc.id_instalacion  = jc.id_instalacion
 AND cc.id_contenido   = jc.id_contenido
 AND upper(cp.generar_Vainilla) = 'S'
 AND cp.id_instalacion = cc.id_instalacion
 AND cp.id_contenido = cc.id_contenido
 ORDER BY
           cp.id_instalacion,
           cp.id_contenido,
           cp.generar_vainilla,
           cp.fecha_publicacion desc

However, this doesn't get the result in the original order, so you
have to wrap another SELECT ... ORDER BY ... LIMIT around it.  Or try
to move the subselect into the FROM clause:

SELECT
  cc.id_contenido
 ,cc.pertenece_premium
 ,cc.Titulo_esp as v_sufix
 ,cc.url_contenido
 ,cc.tipo_acceso
 ,cc.id_sbc
 ,cc.cant_vistos
 ,cc.cant_votos
 ,cc.puntaje_total
 ,cc.id_contenido_padre
 ,jc.imagen_tapa_especial
 ,jc.info_general_esp as info_general
 ,jc.ayuda
 ,jc.tips_tricks_esp as tips_tricks
 ,jc.mod_imagen_tapa_especial
 ,cp.fecha_publicacion as fecha_publicacion
 ,cp.generar_Vainilla
 FROM
 cont_contenido cc
 ,juegos_config jc
 ,(SELECT DISTINCT ON (
                    id_instalacion,
                    id_contenido,
                    generar_vainilla,
                    fecha_publicacion
                   )
          *
     FROM cont_publicacion
    ORDER BY
           id_instalacion,
           id_contenido,
           generar_vainilla,
           fecha_publicacion desc
  ) AS cp
WHERE
 cc.id_instalacion        = 2
 AND cc.id_sbc           = 619
 AND cc.id_tipo           = 2
 AND cc.id_instalacion  = jc.id_instalacion
 AND cc.id_contenido   = jc.id_contenido
 AND upper(cp.generar_Vainilla) = 'S'
 AND cp.id_instalacion = cc.id_instalacion
 AND cp.id_contenido = cc.id_contenido
 ORDER BY
           cp.fecha_publicacion desc
 LIMIT 10
 OFFSET 0

[completely untested]

Servus
 Manfred

pgsql-performance by date:

Previous
From: Manfred Koizar
Date:
Subject: Re: OSDL Database Test Suite 3 is available on PostgreSQL
Next
From: "Fernando Papa"
Date:
Subject: Re: I can't wait too much: Total runtime 432478.44 msec