weird EXPLAIN

Started by Varun Kacholiaalmost 24 years ago3 messagesgeneral
Jump to latest
#1Varun Kacholia
varunk@cse.iitb.ac.in

hi ,
I have just migrated to PostgreSQL...and found the following wierd :

suryadb=# explain select * from dbwin where id in (select id from wdwin
where word='bacd');
NOTICE: QUERY PLAN:
Seq Scan on dbwin (cost=0.00..8158.20 rows=1000 width=76)
^^^^^^^^^^^^^^^^^^
SubPlan
-> Materialize (cost=8.14..8.14 rows=10 width=4)
-> Index Scan using wdkwin on wdwin (cost=0.00..8.14 rows=10 width=4)

i wanted to know why a sequential scan is done on the field id
while it is a primary key in the table dbwin.this can be clearly
confirmed from the query below :

suryadb=# explain select * from dbwin where id=1234;
NOTICE: QUERY PLAN:
Index Scan using dbwin_pkey on dbwin (cost=0.00..8.14 rows=10 width=76)

why does it do a sequential scan for the query above??
Also i would be happy if someone could explain me the numbers in the
cost thing.. i read the docs....but it is kinda confusing and incomplete.

--
------
Varun
Intel Inside - Idiot outside

#2Tom Jenkins
tjenkins@devis.com
In reply to: Varun Kacholia (#1)
Re: weird EXPLAIN

On Mon, 2002-06-17 at 16:04, Varun Kacholia wrote:

hi ,
I have just migrated to PostgreSQL...and found the following wierd :

suryadb=# explain select * from dbwin where id in (select id from wdwin
where word='bacd');
NOTICE: QUERY PLAN:
Seq Scan on dbwin (cost=0.00..8158.20 rows=1000 width=76)
^^^^^^^^^^^^^^^^^^
SubPlan
-> Materialize (cost=8.14..8.14 rows=10 width=4)
-> Index Scan using wdkwin on wdwin (cost=0.00..8.14 rows=10 width=4)

i wanted to know why a sequential scan is done on the field id
while it is a primary key in the table dbwin.this can be clearly
confirmed from the query below :

suryadb=# explain select * from dbwin where id=1234;
NOTICE: QUERY PLAN:
Index Scan using dbwin_pkey on dbwin (cost=0.00..8.14 rows=10 width=76)

why does it do a sequential scan for the query above??

If the table is small, the planner figures (usually correctly) that it
is quicker to load it all in memory and do an in-memory scan, rather
than loading the index into memory, getting the row from the index, then
loading the row from disk (2 disc reads to 1)

--

Tom Jenkins
Development InfoStructure
http://www.devis.com

#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Varun Kacholia (#1)
Re: weird EXPLAIN

On Tue, 18 Jun 2002, Varun Kacholia wrote:

hi ,
I have just migrated to PostgreSQL...and found the following wierd :

suryadb=# explain select * from dbwin where id in (select id from wdwin
where word='bacd');
NOTICE: QUERY PLAN:
Seq Scan on dbwin (cost=0.00..8158.20 rows=1000 width=76)
^^^^^^^^^^^^^^^^^^
SubPlan
-> Materialize (cost=8.14..8.14 rows=10 width=4)
-> Index Scan using wdkwin on wdwin (cost=0.00..8.14 rows=10 width=4)

Although I'm not sure it'd help this case , it also looks like you
haven't used VACUUM ANALYZE on the tables since the above looks an awful
lot like the defaults.