2013-08-29 2 views
0

이이 덜 SQL 쿼리를 만들 수있는 기술이 거기에 내가 전체 카운트 수를 얼마나, 그리고 @codes 객체SQL을 줄이면서 어떻게 속도를 높일 수 있습니까?

@codes = user.codes.joins(:community).merge(Community.not_deleted).order("codes.updated_at DESC").limit(10) 
@codes_count = user.codes.joins(:community).merge(Community.not_deleted).order("codes.updated_at DESC").count 

?

@codes_all = user.codes.joins(:community).merge(Community.not_deleted).order("codes.updated_at DESC") 

@codes_count = @codes_all.count 
@codes = @codes_all.limit(10) 

그것이 가능 같은 이런이 열망 로딩 뭔가를 만드는 방법?

@codes_all = user.codes.includes(community: [:country, :language]).joins(:community).merge(Community.not_deleted).order("codes.updated_at DESC") 

@codes_count = @codes_all.count 
@codes = @codes_all.limit(10) 

답변

0

SQL 쿼리 자체를 더 빠르게 만들려고하는지 아니면 복잡성을 줄이려고하는지 완전히 명확하지 않습니다. 당신이 무엇을 하든지 최소한 두 가지 쿼리를해야합니다. 하나는 총 수를, 하나는 10 개의 코드를 얻습니다. 이 문제를 해결할 방법이 없습니다. 두 번째 예제에서는 중복 코드가 줄어들지 만 첫 번째 예제와 똑같은 쿼리를 작성합니다.

세 번째 예에서는 나중에 실제로 사용하는 경우에만 관련 모델을로드하는 것이 좋습니다. 그렇지 않으면 필요없는 오버 헤드를 추가하는 것입니다.

속도를 높이려면 정렬 또는 정렬에 사용 된 열에 데이터베이스 색인이 있어야합니다.

관련 문제