Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Problema de Performance


  • From: "Raul Andres Duque" <ra_duque(at)yahoo(dot)com(dot)mx>
  • To: "Gabriel Hermes Colina Zambra" <hermeszambra(at)yahoo(dot)com>, "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: Tue, 29 Jan 2008 08:33:57 -0500
  • Message-id: <003201c8627b$9b0dc710$5800a8c0(at)amadeus(dot)net(dot)co>


----- Original Message ----- 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>
Sent: Monday, January 28, 2008 5:57 PM
Subject: Re: [pgsql-es-ayuda] Problema de Performance



--- 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.


No se supone que los dos QUERYs son equivalentes??

No se supone que el INNER JOIN es simplemente un artificio para hacer más legible la consulta ya que separa relaciones de filtros, pero despues de que es "traducido" se llega a la 2da consulta?

Alguien sabe porque el performance es diferente en esas dos consultas?

Atentamente,

RAUL DUQUE
Bogotá, Colombia

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/
--
TIP 4: No hagas 'kill -9' a postmaster




Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group