RE: [SQL] database with 1000000 rows is very slow - Mailing list pgsql-sql

From Justin Long
Subject RE: [SQL] database with 1000000 rows is very slow
Date
Msg-id 01BF8756.8C4F07B0.justinlong@strategicnetwork.org
Whole thread Raw
List pgsql-sql
Who do we send optimizer questions to?

For example, I have a logbook which is ordered by a logtime stamp. Here's 
my explain output (and by the way, that was very helpful, I hadn't noticed 
that command before):

EXPLAIN select * from logbook order by logtime desc limit 25;
NOTICE:  QUERY PLAN:

Sort  (cost=3671.28 rows=76766 width=80) ->  Seq Scan on logbook  (cost=3671.28 rows=76766 width=80)

Now I wonder why it's doing a sequential scan. If it's ordered by logtime 
and a limit is specified can't it determine that it should just take the 
bottom 25 entries off the list?

_____
Justin Long
Network for Strategic Missions
977 Centerville Turnpike, Va Beach, VA 23463
Ofc 757-226-5011, Fax 757-226-5006, Email justinlong@strategicnetwork.org
Never retreat. Never surrender. Never cut a deal with a dragon.
http://www.strategicnetwork.org


-----Original Message-----
From:    Peter Eisentraut [SMTP:e99re41@DoCS.UU.SE]
Sent:    Monday, March 06, 2000 2:22 AM
To:    David Celjuska
Cc:    pgsql-sql@postgreSQL.org
Subject:    Re: [SQL] database with 1000000 rows is very slow

On Sun, 5 Mar 2000, David Celjuska wrote:

> CREATE UNIQUE INDEX "article_pkey" on "article" using btree ( "id"
> "varchar_ops" );

> this database store. But I think that select * from article where id
> like 'something%' is very slow (some minutes) and query as: select *
> from article where id='something' is very slow too. I don't know where
> is a problem a I would like optimalise this, but how can I do it?

If you haven't run vacuum analyze lately then you should do that.

> When I use hash except btree, query as: select * from article where
> id='something' is fast but select * from article where id='something%'
> is very slow.

Yup. That's because hashes only work on exact matches and btrees can do
ordering (like 'somethink' is surely "larger" than 'something%').

> Or postgresql make indexes automaticly?

No, you have to make them, but you did that right.

> How can I see that postgres use/or no use index on some query? It is
> possible?

Yup. EXPLAIN SELECT ....

In fact, if you can't make any progress you should always accompany any
optimizer issues with the EXPLAIN output. That will help our optimizer
gurus. :)


--
Peter Eisentraut                  Sernanders vag 10:115
peter_e@gmx.net                   75262 Uppsala
http://yi.org/peter-e/            Sweden


************


pgsql-sql by date:

Previous
From: zoltan.sebestyen@netvisor.hu
Date:
Subject: index file's growing big
Next
From: Justin Long
Date:
Subject: Selecting random element?