Very simple select, using index for ordering, but not for selecting. How to make it faster? - Mailing list pgsql-general

From Antonio Goméz Soto
Subject Very simple select, using index for ordering, but not for selecting. How to make it faster?
Date
Msg-id 519D1EB0.9020301@gmail.com
Whole thread Raw
Responses Re: Very simple select, using index for ordering, but not for selecting. How to make it faster?
List pgsql-general
Hi,

I have the following simple query on a simple table:

system=# select * from history where lookup = 'trunk' and lookupid = '248' order by created desc limit 1000;


system=# \d history
                                   Table "public.history"
  Column  |           Type           |                      Modifiers
----------+--------------------------+------------------------------------------------------
 id       | integer                  | not null default nextval('history_id_seq'::regclass)
 created  | timestamp with time zone |
 creator  | integer                  | not null default 1
 contact  | integer                  | not null default 1
 type     | character varying        | not null default ''::character varying
 lookup   | text                     |
 lookupid | integer                  | not null default 1
 value    | text                     |
Indexes:
    "history_pkey" PRIMARY KEY, btree (id)
    "history_created_index" btree (created)
    "history_creator_index" btree (creator)
    "history_lookup_lookupid_creator_index" btree (lookup, lookupid, creator)
    "history_lookup_lookupid_index" btree (lookup, lookupid)
Foreign-key constraints:
    "history_contact_constraint" FOREIGN KEY (contact) REFERENCES contact(id)
    "history_creator_constraint" FOREIGN KEY (creator) REFERENCES contact(id)

system=# explain select * from history where lookup = 'trunk' and lookupid = '248' order by created desc limit 1000;
                                              QUERY PLAN 
-----------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.00..14799.28 rows=1000 width=58)
   ->  Index Scan Backward using history_created_index on history  (cost=0.00..12201987.90 rows=824499 width=58)
         Filter: ((lookup = 'trunk'::text) AND (lookupid = 248))
(3 rows)


Why doesn't it use the index specified in select? How can I change the query to make it faster?

Thanks,
Antonio



pgsql-general by date:

Previous
From: Ray Stell
Date:
Subject: Re: pg_upgrade -u
Next
From: Shaun Thomas
Date:
Subject: Re: Very simple select, using index for ordering, but not for selecting. How to make it faster?