2011-02-23 6 views
1

레일즈 3을 준비하려면 코드를 업데이트해야하지만 아래 코드에서 주요 성능 문제가 발생합니다.이 코드가 왜 느린가요?

오래된 코드 (좋은 빠른)

@products = Product.all(
         :order => 'name', 
         :include => [:category, :brand, :merchant] 
         ).paginate(:page => params[:page]) 

새로운 코드 (10 × 느린)

@products = Product.order("name") 
        .includes([:category, :brand, :merchant]) 
        .paginate(:page => params[:page]) 

나는 라인이 쉽게 읽기 중단했다.

DB에 Postgres를 사용하고 있습니다. 아마도 이것이 문제입니까?

이 코드를 더 잘 만들 수있는 다른 팁은 많이 감사하겠습니다.

+0

프로덕션 모드에서 사용해 보셨습니까? – Zepplock

+0

단지 개발이 아닙니다. 구문을 사용하여 실수를 저 지르지 않았습니까? – Zinc

+0

개발 모드가 반드시 속도 최적화되어 있지는 않습니다. 이것은 디버깅 후크 또는 편의 기능이 될 수 있습니다. 느린 이유가 분명하지 않다면 적어도 개발 단계에서 시도해 볼 것입니다. – Chuck

답변

1

로그 또는 콘솔에서 출력 된 SQL을 확인하여 변경된 사항 및/또는 쿼리 최적화 방법을 확인할 수 있습니다.

+0

콘솔이 문제가없는 것 같습니다. SQL은 괜찮아 보입니다. 이것이 내가 처음 체크 한 것입니다 – Zinc

+1

정확히 10 배 더 느린 것은 무엇입니까? –

+0

15ms (이전 코드)에서 200ms (새 코드) – Zinc

0

페이지 매김에 문제가있을 수 있습니까? 페이지 매김에 어떤 플러그인을 사용하고 있습니까? Kaminari를 사용해 볼 수도 있습니다.

관련 문제