커스텀 필드 iso8601 값으로 정렬된 토픽을 가져오는 방법?

limit(10)이 이미 그렇게 처리할 것입니다 :slight_smile:

이런 방식으로 처리할 수 있습니다: (하지만 테스트는 하지 않았습니다)

Topic.where("category_id in (?)", [cat_id])
         .where("closed = ?", false)
         .joins("LEFT JOIN topic_custom_fields import_tcf ON import_tcf.topic_id = topic.id AND topic_custom_fields.name = 'importedSortDate'")
         .order("TIMESTAMP import_tcf.value")
         .order("created_at desc")
         .limit(10)

문제는 포스트그레SQL에 날짜 문자열을 타임스탬프로 캐스팅하도록 요청하는 것이 매우 비효율적이라는 점입니다. 모든 주제에 대해 먼저 변환을 수행한 후, 첫 번째 10개를 선택해야 하기 때문입니다.

여기서 몇 가지 옵션이 생각납니다 - ISO8601 대신 날짜를 "epoch 이후 초"로 저장할 수 있습니다. 그러면 포스트그레SQL이 정렬하는 것이 훨씬 쉬워집니다. 또는 데이터베이스 마이그레이션을 사용하여 topic_custom_fields 테이블에 TIMESTAMP value 인덱스를 추가할 수도 있습니다.