You're missing an analyze step: (see below)
>here is the table structure:
>create table test_10million (
>id int8,
>app_id int8
>);
>
>< fill the table with 10 million record >
>
>create index test_10million_id on test_10million (id);
ANALYZE test_10million;
>this query always uses sequential scan:
>select * from test_10million where id = 123 and app_id = 100;
Now try
explain select * from test_10million where id = 123 and app_id = 100;
Cheers,
Doug