Обсуждение: weird EXPLAIN
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
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
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.