Re: More grist for the PostgreSQL vs MySQL mill

From: "Chad Wagner" <chad(dot)wagner(at)gmail(dot)com>
To: "Harald Armin Massa" <haraldarminmassa(at)gmail(dot)com>
Cc: "Peter Rosenthal" <voiperster(at)gmail(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: More grist for the PostgreSQL vs MySQL mill
Date: 2007-01-22 13:24:51
Message-ID: 81961ff50701220524u613ef4c0uc75b9f0f8c979f5c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 1/22/07, Harald Armin Massa <haraldarminmassa(at)gmail(dot)com> wrote:
>
> >> select * from table where table_id in (?, ?, ?, ?, ?, ?, ?, ...)
> >
> >
> I usually try to rewrite this kind of queries to
>
> select whatever from table t1 join
> (select table_id from xxxxx where xxxxx) t2 using (table_id)
>
> And 3 out of 4 this performs better on Oracle and PostgreSQL.
>
> Would be curious why it does , but usually I am happy that it does:)
>

Because the results would be different than a subselect, less work =
faster. One thing to point out is that a query of the form:

select ...
from foo
where id in (select id from bar where n=27)

Would normally result in a SORT UNIQUE for the "select id from bar where
n=27" part. Where as:

select ...
from foo f1, (select id from bar where n=27) f2
where f1.id = f2.id

is the same as...

select ...
from foo f1, bar f2
where f2.n=27
and f1.id=f2.id

which would not result in a sort unique. In order to obtain the same
results as a subselect you would need to group or distinct, and I would
imagine the results would be the same as the IN..SUBSELECT

--
Chad
http://www.postgresqlforums.com/

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Harald Armin Massa 2007-01-22 13:33:10 Re: More grist for the PostgreSQL vs MySQL mill
Previous Message Alvaro Herrera 2007-01-22 13:17:05 Re: [ANNOUNCE] == PostgreSQL Weekly News - January 21 2007 ==