Воспользуйтесь преимуществами сортировки и ограничения, как при разбивке на страницы. Если вам нужен i-й блок строк, используйте OFFSET.
SELECT val FROM big_table
where val = someval
ORDER BY id DESC
LIMIT n;
В ответ на Nir:
Операция сортировки не обязательно оштрафована, это зависит от того, что делает планировщик запросов. Так как этот вариант использования имеет решающее значение для производительности разбивки на страницы, есть некоторые оптимизации (см. Ссылку выше). Это верно и для postgres: «ORDER BY ... LIMIT можно выполнить без сортировки» E.7.1. Последняя пуля
explain extended select id from items where val = 48 order by id desc limit 10;
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
| 1 | SIMPLE | items | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+