Допустим, я делаю нумерацию страниц следующим образом:
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) .
Мой вопрос: что такое самый эффективный способ выяснить, на какой странице находится статья, если я
а) знаю идентификатор_сталии
б) знаю, сортировка выполняется по ORDER BY article_rating?
Это должно быть эффективно, потому что я собираюсь делать этот тип запросов очень часто.
Было бы еще лучше, если бы он не только выплевывал номер страницы, но и все статьи на этой странице.
Так, например, если все статьи отсортированы по рейтингу и каждые десять из них помещены на другую страницу, я хочу выяснить, на какой странице находится статья с идентификатором 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;