Query plan for NOT IN

From: Matthew Wakeling <matthew(at)flymine(dot)org>
To: pgsql-performance(at)postgresql(dot)org
Subject: Query plan for NOT IN
Date: 2009-10-05 13:52:13
Message-ID: alpine.DEB.2.00.0910051446450.19472@aragorn.flymine.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance


mnw21-modmine-r13features-copy=# select count(*) from project;
count
-------
10
(1 row)

mnw21-modmine-r13features-copy=# select count(*) from intermineobject;
count
----------
26344616
(1 row)

mnw21-modmine-r13features-copy=# \d intermineobject;
Table "public.intermineobject"
Column | Type | Modifiers
--------+---------+-----------
object | text |
id | integer | not null
class | text |
Indexes:
"intermineobject_pkey" UNIQUE, btree (id)

mnw21-modmine-r13features-copy=# explain select * from project where id
NOT IN (SELECT id FROM intermineobject);
QUERY PLAN
------------------------------------------------------------------------------------
Seq Scan on project (cost=1476573.93..1476575.05 rows=5 width=183)
Filter: (NOT (hashed SubPlan 1))
SubPlan 1
-> Seq Scan on intermineobject (cost=0.00..1410720.74 rows=26341274 width=4)
(4 rows)

This query plan seems to me to be a little slow. Surely it could iterate
through the ten project rows and perform ten index lookups in the big
table?

Matthew

--
Riker: Our memory pathways have become accustomed to your sensory input.
Data: I understand - I'm fond of you too, Commander. And you too Counsellor

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Grzegorz Jaśkiewicz 2009-10-05 13:56:05 Re: Query plan for NOT IN
Previous Message Csaba Nagy 2009-10-05 13:46:39 Re: [OT] Best suiting OS