0
여러 개의 열로 필터링하려고하는 모델이 있는데 (일부는 필터에 없을 수도 있음)이 쿼리의 속도를 높이려고합니다. 나는이 인덱스를 추가 한루비 레일 컬렉션을 필터링하는 가장 빠른 방법
def index
@things = Thing.accessible_by(current_ability)
if params.has_key?(:color)
@things = @things.where(:color => params[:color])
end
if params.has_key?(:weight)
@things = @things.where(:weight => params[:weight])
end
if params.has_key?(:size)
@things = @things.where(:size => params[:size])
end
@things = @things.order(:updated_at).page(params[:page]).per(params[:per_page])
end
:
add_index :things, :color
add_index :things, :weight
add_index :things, :size
이 작업을 수행하는 가장 빠른 방법을 알아 내려고 여기
컨트롤러의 색인 방법의 조각입니다. 또한 전달 된 매개 변수를 연결하여 캐시에 결과를 추가하고 싶다면 추가하는 것이 합당합니까? 캐시는 초기 필터가 아닌 후속 필터에만 도움이됩니다.감사
쿼리를 수행하는 데 걸리는 시간과 소요 시간은 어느 정도입니까? 'EXPLAIN' 결과는 무엇입니까? –
350 개 쿼리의 경우 ~ 580ms가 소요됩니다. 오, 흥미 롭습니다. 활발한 기록에서 40ms 밖에 보이지 않지만 json을 렌더링하는 데 500ms가 걸립니다. ( –
슬프게하지 마세요. 이전에했던 것보다 문제를 더 잘 이해하면 언제나 좋습니다! (많이 쓰여졌습니다) (https : //www.google.com/search? q = speed + up + rails + json + rendering) (레일스에서 JSON 렌더링 속도를 높이는 것에 대해) –