Re: [HACKERS] Subqueries and indexes

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [HACKERS] Subqueries and indexes
Дата
Msg-id 199903171832.NAA12274@candle.pha.pa.us
обсуждение исходный текст
Список pgsql-hackers
> > 
> > All except of subqueries with aggregates in target list.
> 
> I am confused.  How do I rewrite this to use exists?
> 
>          SELECT keyname
>          FROM markmain
>          WHERE mark_id NOT IN(SELECT mark_id
>                               FROM markaty)
> 
> 
> Even if I use IN instead of NOT IN, I don't see how to do it without
> making it a correlated subquery.
> 
>          SELECT keyname
>          FROM markmain
>          WHERE EXISTS (SELECT mark_id
>                        FROM markaty
>                WHERE markmain.mark_id = markaty.mark_id)
> 
> This is a correlated subquery.  It did not use hash, but it did use the
> index on markaty:
> 
>     Seq Scan on markmain  (cost=16.02 size=334 width=12)
>       SubPlan
>         ->  Index Scan using i_markaty on markaty  (cost=2.10 size=3 width=4)
> 
> While the index usage is good, the fact is the subquery is executed for
> every row of markmain, isn't it?  That's one query executed for each row
> in markmain, isn't it?

I just tried this with NOT EXISTS, and it was VERY fast.  Can we discuss
the issues, and perhaps auto-rewrite these as exists.  Is that always
better than hash?


--  Bruce Momjian                        |  http://www.op.net/~candle maillist@candle.pha.pa.us            |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] Subqueries and indexes
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] Sequences....