0

我目前正在使用ActiveRecord 对项目进行分页

def index
  params[:per_page] ||= 50
  @articles = Article.limit(params[:per_page]).offset(params[:page].to_i * params[:per_page].to_i)
  @articles_count = Article.count
end

......它运作良好。

但是,我想知道是否可以使用 ActiveRecord 或纯 SQL(例如 postgresql)使用单个查询来执行这两个查询。谢谢!

4

1 回答 1

1

您当然可以使用子查询,但这不会提高性能,因为 DBMS 仍将执行 2 个单独的查询:

SELECT
  article.*,
 (SELECT COUNT(*) FROM article) AS count
FROM article
LIMIT x
OFFSET y

但是有了这个你就不能轻易地使用 ActiveRecord。

然而,MySQL 有一个内置函数SELECT COUNT(*) FROM article。但它会做同样的事情:它只是执行第二个查询COUNT(*)

您的解决方案工作正常。

于 2013-02-23T20:32:27.087 回答