Re: I can't wait too much: Total runtime 432478.44 msec

From: Manfred Koizar <mkoi-pg(at)aon(dot)at>
To: "Fernando Papa" <fpapa(at)claxson(dot)com>
Cc: <pgsql-performance(at)postgresql(dot)org>
Subject: Re: I can't wait too much: Total runtime 432478.44 msec
Date: 2003-08-04 14:10:18
Message-ID: i2psivsr6r78efetf3fcb3h5h6k9ruc8fc@4ax.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Fri, 1 Aug 2003 18:17:17 -0300, "Fernando Papa" <fpapa(at)claxson(dot)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

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Fernando Papa 2003-08-04 14:13:43 Re: I can't wait too much: Total runtime 432478.44 msec
Previous Message Fernando Papa 2003-08-04 14:01:41 Re: I can't wait too much: Total runtime 432478.44 msec