sequence scan, but indexed tables

Started by Cserna Zsoltover 23 years ago4 messagesgeneral
Jump to latest
#1Cserna Zsolt
csernazs@freemail.hu

Hi!

I have two tables (picmain, and picalbum). Both table has an unique
index filed, which is indexed (this field called "aid" and the indexes
are: picmain_aid_idx, picalbum_aid_idx). But when I execute the query
with simple join, I get this:

explain SELECT picmain.aid from picmain, picalbum where
picmain.aid=picalbum.aid;
NOTICE: QUERY PLAN:

Hash Join (cost=806.71..69631.60 rows=832629 width=8)
-> Seq Scan on picalbum (cost=0.00..14323.29 rows=832629 width=4)
-> Hash (cost=730.57..730.57 rows=30457 width=4)
-> Seq Scan on picmain (cost=0.00..730.57 rows=30457
width=4)

Both table has "relative" many rows (picmain: around 30000, picalbum:
around 800000).

I don't know why postgres use sequence scan, because I have two good
indexes. :)
vacuum, vacuum analyze is done.

I have postgresql 7.0.3 running on Debian GNU/Linux i386.

Thanks.

Zsolt

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Cserna Zsolt (#1)
Re: sequence scan, but indexed tables

csernazs@freemail.hu (Cserna Zsolt) writes:

explain SELECT picmain.aid from picmain, picalbum where
picmain.aid=picalbum.aid;
NOTICE: QUERY PLAN:

Hash Join (cost=806.71..69631.60 rows=832629 width=8)
-> Seq Scan on picalbum (cost=0.00..14323.29 rows=832629 width=4)
-> Hash (cost=730.57..730.57 rows=30457 width=4)
-> Seq Scan on picmain (cost=0.00..730.57 rows=30457
width=4)

Both table has "relative" many rows (picmain: around 30000, picalbum:
around 800000).

Then I'd say the planner is making the right decision.

If you want to experiment, see what plans (and actual runtimes) you get
after turning off enable_hashjoin and/or enable_mergejoin. With both
off you will get a nestloop with inner indexscan ... and I bet you won't
like it.

I have postgresql 7.0.3 running on Debian GNU/Linux i386.

You do realize that version is quite ancient?

regards, tom lane

#3Cserna Zsolt
csernazs@freemail.hu
In reply to: Tom Lane (#2)
Re: sequence scan, but indexed tables

[...]

Then I'd say the planner is making the right decision.

Yes, the cost is cool, if I turn off enable_hashjoin, I get
a very hight cost. But the runtime is smaller (in a bigger
query, which have around 20 row on output, and 2-3 subselect
and 3-4 join).

I have postgresql 7.0.3 running on Debian GNU/Linux i386.

You do realize that version is quite ancient?

So, upgrade is strongly recommended? :) Debian package is
not so good, the backup script doesn't work (in an earlier
debian package). I tried to backup the database (I have
daily backup) before upgrading, but restoring from this was
too hard for me, because the postgres server didn't started
(he/she thinks I haven't got backup :).

Regards, and thank you,

Zsolt

#4Oliver Elphick
olly@lfix.co.uk
In reply to: Cserna Zsolt (#3)
Re: sequence scan, but indexed tables

On Mon, 2002-07-22 at 14:33, Cserna Zsolt wrote:

So, upgrade is strongly recommended? :) Debian package is
not so good, the backup script doesn't work (in an earlier
debian package). I tried to backup the database (I have
daily backup) before upgrading, but restoring from this was
too hard for me, because the postgres server didn't started
(he/she thinks I haven't got backup :).

If you have problems with the packaging, please tell me about them. I
may well be able to help with the immediate problem; I may also be able
to improve the package for the benefit of other users. But I can't do
anything about it if I never hear about it.

Use the Debian bug reporting system (install the package reportbug).

--
Oliver Elphick Oliver.Elphick@lfix.co.uk
Isle of Wight, UK
http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"Then Peter and the other apostles answered and said,
We ought to obey God rather than men."
Acts 5:29