2013-02-23 2 views
0

에서 나는 현재와 ActiveRecord to paginate items을 사용하고 있습니다 :두 SQL 액티브 하나의 쿼리 또는 SQL

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가있는 단일 쿼리 또는 pure SQL (예 : postgresql)을 사용하여 두 쿼리를 수행 할 수 있는지 궁금합니다. 감사!

답변

1

당신은 물론 서브 쿼리를 사용할 수 있지만, 그 성능이 향상되지 것이라고 DBMS는 여전히 2 개 별도의 쿼리를 실행하기 때문에 :

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

을하지만 당신은 쉽게 액티브을 사용할 수 없습니다.

그러나 MySQL에는 SELECT COUNT(*) FROM article의 기능이 내장되어 있습니다. 두 번째 쿼리는 COUNT(*)으로 실행됩니다.

당신의 솔루션은 정상적으로 작동합니다.