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

...そして、それはうまく機能しています。

ただし、これら 2 つのクエリを、ActiveRecord を使用するか、純粋な SQL (postgresql など) で 1 つのクエリで実行できるかどうか疑問に思っています。ありがとう!

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ます。しかし、同じことを行います: で 2 番目のクエリを実行するだけCOUNT(*)です。

あなたのソリューションはうまくいきます。

于 2013-02-23T20:32:27.087 に答える