Profitez de TRI et de LIMITER les comme vous le feriez avec la pagination. Si vous voulez le i-ème bloc de lignes, l'utilisation de l'OFFSET.
SELECT val FROM big_table
where val = someval
ORDER BY id DESC
LIMIT n;
En réponse à Nir:
L'opération de tri n'est pas nécessairement pénalisé, cela dépend de ce que le planificateur de requête. Depuis ce cas d'utilisation est cruciale pour la pagination de la performance, il y a quelques optimisations (voir le lien ci-dessus). Cela est vrai dans postgres "ORDRE PAR ... la LIMITE peut être fait sans tri" E. 7.1. Dernière puce
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 |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+