哪个页面比方说,我不分页这样的:分页:找出一个项目是(给定的主键和排序顺序)
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的)。
我的问题是:什么是要找出哪个网页上的文章是最有效的方式,如果我
一)知道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;
如果有多个项目具有相同的'article_rating',那么这可能会特别棘手 - 它可能出现在多个不同的页面上。 – 2011-06-06 14:43:05
@Damien_The_Unbeliever:你说得对,如果两篇或多篇文章具有相同的评分,我应该可能已经完成ORDER BY article_rating,article_id以获得确定性顺序。 – unicornop 2011-06-06 14:47:27