From: | Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us> |
---|---|
To: | vadim(at)krs(dot)ru (Vadim Mikheev) |
Cc: | hackers(at)postgreSQL(dot)org |
Subject: | Re: [HACKERS] Subqueries and indexes |
Date: | 1999-03-17 05:48:17 |
Message-ID: | 199903170548.AAA02211@candle.pha.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> Bruce Momjian wrote:
> >
> > In this QUERY:
> >
> > SELECT keyname
> > FROM markmain
> > WHERE mark_id NOT IN(SELECT mark_id
> > FROM markaty)
> >
> > I have an index on markaty.mark_id, and have vacuum analyzed. EXPLAIN
> > shows:
> >
> > Seq Scan on markmain (cost=2051.43 size=45225 width=12)
> > SubPlan
> > -> Seq Scan on markaty (cost=2017.41 size=52558 width=4)
> >
> > Vadim, why isn't this using the index? Each table has 50k rows. Is it
> > NOT IN that is causing the problem? IN produces the same plan, though.
> ....
> >
> > Seems the optimizer could either hash the subquery, or us an index.
> > Certainly would be faster than a sequental scan, no?
>
> Optimizer should hash the subquery, but I didn't implement this -:(
> Try to rewrite query using NOT EXISTS and index will be used.
How hard would it be to implement it? I know you are deep into MVCC,
but doing a nested loop to join a subquery is really bad.
Now, in our defense, I tried this with commercial Ingres 6.4, and it
took so long I copied the data into PostgreSQL and tried to run it
there. Eventually, I copied the data into a second table, and did a
DELETE FROM using two tables in the WHERE clause, and the rows left
where my NOT IN result. It did use a hash join in that case.
Obviously, Ingres was doing a nested loop do, but I want to do better
than Ingres.
I think we really need to get that hash enabled. Is there something I
can do to enable it, or can I do something to help you enable it?
All queries can't be rewritten as EXISTS.
--
Bruce Momjian | http://www.op.net/~candle
maillist(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
From | Date | Subject | |
---|---|---|---|
Next Message | Vadim Mikheev | 1999-03-17 06:57:48 | Re: [HACKERS] Sequences.... |
Previous Message | Clark Evans | 1999-03-17 05:36:07 | Re: [HACKERS] Sequences.... |