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 -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general