Re: sub-query optimization

From: jasiek(at)serwer(dot)skawsoft(dot)com(dot)pl
To: Brad Hilton <bhilton(at)vpop(dot)net>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: sub-query optimization
Date: 2003-02-14 19:21:13
Message-ID: 20030214192113.GA26987@serwer
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Fri, Feb 14, 2003 at 10:22:19AM -0800, Brad Hilton wrote:
> Hello,
>
> I am hoping someone can help explain why modifying the following query
> can effect such a huge change in speed. The query is:
>
> select * from articles
> where exists
> ( select 1 from article_categories
> where
> article_categories.article_id = articles.id and
> article_categories.category_id is null
> )

Can you test these two queries?
select * from
(select article_id from article_categories where category_id is null
group by article_id) X
join articles using (article_id);

select <fields> from
article_categories
join articles using (article_id)
where category_id is null
group by <fields>

Above queries will need index on article_id
I'm not sure if it helps, but they are the only solutions in my
mind ;-)

Can you say anything about data statistics in your tables? How
many rows are with category_id=null?

I looked into query definition once again. Your query doesn't make
sense - article_categories have not null category_id... What do you really
want to do?

Regards,
Tomasz Myrta

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Johannes Lochmann 2003-02-14 19:31:31 Re: PL/PGSQL EDITOR
Previous Message greg 2003-02-14 18:41:10 Re: Drop temporary table only if it exists