From: | Dimi Paun <dimi(at)lattica(dot)com> |
---|---|
To: | pgsql-performance <pgsql-performance(at)postgresql(dot)org> |
Subject: | Bad performance on simple query |
Date: | 2008-11-17 15:53:17 |
Message-ID: | 1226937197.5760.89.camel@dimi.lattica.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
Hi folks,
I have a simple table that keeps track of a user's access history.
It has a a few fields, but the important ones are:
- ownerId: the user's ID, a int8
- accessTS: the timestamp of the record
The table right now is small, only 1942 records.
The user I test with (10015) has only 89 entries.
What I want is to get the last 5 accesses of a user:
SELECT * FROM triphistory WHERE ownerId = 10015 ORDER BY accessTS DESC LIMIT 5
If I create a composite index *and* analyze:
create index IDX_TRIP_HISTORY_OWNER_ACCESS_TS on tripHistory (ownerId, accessTS);
ANALYZE triphistory;
It takes 0.091s (!):
perpedes_db=# EXPLAIN ANALYZE SELECT * FROM triphistory WHERE ownerId = 10015 ORDER BY accessTS DESC LIMIT 5;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..7.99 rows=5 width=106) (actual time=0.024..0.042 rows=5 loops=1)
-> Index Scan Backward using idx_trip_history_owner_access_ts on triphistory (cost=0.00..142.20 rows=89 width=106) (actual time=0.021..0.034 rows=5 loops=1)
Index Cond: (ownerid = 10015)
Total runtime: 0.091 ms
(4 rows)
BTW, this is after several runs of the query, shouldn't all this stuff be in memory?
This is not a fast machine, but this seems rather excessive, no?
--
Dimi Paun <dimi(at)lattica(dot)com>
Lattica, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Alan Hodgson | 2008-11-17 16:28:51 | Re: Bad performance on simple query |
Previous Message | PFC | 2008-11-17 10:51:32 | Re: Improve Seq scan performance |