4

두 가지 질문이 있습니다.ActiveRecord 또는 ThinkingSphinx에서 가져온 컬렉션 정렬

  1. 데이터베이스/스핑크스에서 다시 선택 모든없이 액티브 또는 스핑크스 생각에서 모음을 정렬하는 방법이 있나요? 예.

    @models = Model.where("foo = :foo", {:foo => params[:foo]}) models.some_code_or_method_which_will_resort_everything

  2. 가치가이 게임에 촛불 (다시 가져 오는없이 배열/모음을 정렬)인가? 어떤 옵션이 성능면에서 더 좋은지 궁금합니다.

미리 감사드립니다.

편집

그래서,이 게임은 촛불 가치가 때 :

  • 페이지 매김을 사용하지 않는 (아약스와
  • 새로 고침 페이지 DIV (모든 기록이 있어야합니다) 돈 호출 색인 또는 표시 작업으로 모든 것을 다시 가져 오지 않음)

예술을위한 예술.

답변

5

내가 '일종의'작업을해야 거의 확신 :

@models.sort! { |a,b| a.foo <=> b.foo } 

는 두 번째 질문에 대답, 예, 그렇습니다. 컬렉션에있는 객체의 양에 따라 다르지만 대개는 일반적으로 성능이 우수합니다.

+1

데이터베이스/스핑크스 호출의 일부로 정렬 할 수 없습니까? 그렇게하면 DB/Sphinx가 당신을 위해 모든 노력을 다합니다 (그리고 Ruby 코드보다 더 빠름). 또한 페이지 번호가 매겨진 검색 결과가 페이지 단위로 정렬됩니다. – pat

+0

처음에는 db가 빠르게 정렬됩니다. 그러나 동일한 데이터 셋이 필요하지만 다르게 주문한 경우에는 db와 ruby ​​orm 둘 다 하나 더 많은 쿼리가 필요합니다. 이것은 루비 정렬보다 확실히 느립니다. –

관련 문제