Допустим, я выполняю разбиение на страницы следующим образом:
SELECT article_id,
article_content
FROM articles
ORDER BY article_rating
OFFSET (page - 1) * items_per_page
LIMIT items_per_page;
У меня индекс выше (article_rating, article_id) .
Мой вопрос: что такое наиболее эффективный способ узнать, на какой странице находится статья, если я
a) знаю article_id
b) знаю, что сортировка ORDER BY article_rating?
Она должна быть эффективной, потому что я будет очень часто выполнять этот тип запроса.
Было бы даже лучше, если бы он выдавал не только номер страницы, но и все статьи на этой странице.
Так, например, если все статьи отсортированы по их рейтинг и каждые десять из них помещены на разные страницы, я хочу выяснить, на какой странице находится статья с ID 839.
Я использую PostgreSQL 8.4 (при необходимости я готов обновить его).
Спасибо!
РЕДАКТИРОВАТЬ:
Как указано в комментариях ниже, мой запрос, вероятно, должен выглядеть так:
SELECT article_id,
article_content
FROM articles
ORDER BY article_rating,
article_id
OFFSET (page - 1) * items_per_page
LIMIT items_per_page;