I was investigating some performance issues and stumbled upon this behavior: create table main_table (i serial primary key, data varchar, ord int); create view main_view_order as select m.i, m.data, m.ord from main_table m order by m.i desc; insert into main_table select i, i::text, i/10 from generate_series(1,1000000) i; create index ix_ord on main_table(ord); analyze main_table; explain analyze select * from main_view_order m where m.ord >= 5000 and m.ord <= 5500 limit 10; Limit (cost=0.00..69.01 rows=10 width=14) (actual time=330.943..330.951 rows=10 loops=1) -> Index Scan Backward using main_table_pkey on main_table m (cost=0.00..36389.36 rows=5281 width=14) (actual time=330.937..330.940 rows=10 loops=1) Filter: ((ord >= 5000) AND (ord <= 5500)) Total runtime: 330.975 ms I havent found it on TODO or in archives so I'm wondering if this is a known behavior. Regards, Rikard -- Rikard Pavelic http://www.ngs.hr/ -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance