Re: Problema de Performance

From: Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com>
To: Yasset Perez Riverol <yasset(dot)perez(at)biocomp(dot)cigb(dot)edu(dot)cu>, 'postgre sql' <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Problema de Performance
Date: 2008-01-28 22:57:06
Message-ID: 929547.40223.qm@web63703.mail.re1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- Yasset Perez Riverol
<yasset(dot)perez(at)biocomp(dot)cigb(dot)edu(dot)cu> escribió:

> Hola a todos disculpen la demora:
> Mi problema consistia en el performance de un query
> utilizando INNER JOIN
> entre una tabla de 5 millones de compuestos y una
> tabla de 44 tuplas pasando
> por una tabla de 9 millones de tuplas.
>
> Como me solicitaron el EXPLAIN del query es el
> siguiente:
>
> EXPLAIN select tabla1.id, tabla2.id from tabla1
> INNER JOIN tabla3 ON
> (tabla3.id_tabla1 = tabla1.id) INNER JOIN tabla2 ON
> (tabla2.id =
> tabla3.id_tabla2);
>
> QUERY PLAN
>
--------------------------------------------------------------------------------
> Hash Join (cost=313052.04..527393.28 rows=237964
> width=96)
> Hash Cond: ((tabla3.id_tabla1)::text =
> (tabla1.id)::text)
> -> Hash Join (cost=1.99..152461.40 rows=237964
> width=96)
> Hash Cond: ((tabla3.id_tabla2)::text =
> (tabla2.shortname)::text)
> -> Seq Scan on tabla3
> (cost=0.00..146023.56 rows=1081656 width=96)
> -> Hash (cost=1.44..1.44 rows=44
> width=48)
> -> Seq Scan on tabla2
> (cost=0.00..1.44 rows=44 width=48)
> -> Hash (cost=195175.69..195175.69 rows=5412669
> width=48)
> -> Seq Scan on tabla1
> (cost=0.00..195175.69 rows=5412669
> width=48)tabla3
> (9 rows)
>
>
>
>
> --
> Ing. Yasset Pérez Riverol.
> Grupo de Bioinformática.
> CIGB, La Habana, Cuba.
>
> -------------------------
>
> "La alegría está en la lucha, en el esfuerzo,
> en el sufrimiento que supone la lucha y no
> en la victoria."
> Mahatma Gandhi

Sabes hace un mes tuve un tema parecido y sustitui el
inner join

select tabla1.id, tabla2.id from tabla1
INNER JOIN tabla3 ON
(tabla3.id_tabla1 = tabla1.id) INNER JOIN tabla2 ON
(tabla2.id =
tabla3.id_tabla2);

Por

select tabla1.id, tabla2.id from tabla1,tabla2
, tabla3
where
(tabla3.id_tabla1 = tabla1.id) and
(tabla2.id =
tabla3.id_tabla2);

Y la performance mejoro mucho.

La frase de Gandhi esta muy linda, muy lirica, pero
prefiero no descartar por ello la victoria. Ya que
quiza la misma de felicidad a toda una sociedad, por
eso te saludo desde Uruguay con otra frase.

"Hasta la victoria siempre"
Ernesto "Che"

Atte.
Gabriel Colina

____________________________________________________________________________________
¡Capacidad ilimitada de almacenamiento en tu correo!
No te preocupes más por el espacio de tu cuenta con Correo Yahoo!:
http://correo.espanol.yahoo.com/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2008-01-28 23:04:12 Re: Esta es la estrucutra de las tablas.....
Previous Message + RME 2008-01-28 19:06:05 Re: Problema de Performance