2016-08-23 2 views
0

이 레일/SQL 코드를 물어 보지 ...레일 SQL 쿼리 계산 결과

@new_relationships = User.select('*') 
         .from("(#{@rels_unordered.to_sql}) AS rels_unordered") 
         .joins(" 
        INNER JOIN relationships 
        ON   rels_unordered.id = relationships.character_id 
        ORDER BY relationships.created_at DESC 
        ") 

은 다음과 같이 시작하는 쿼리를 생성합니다

SELECT COUNT(*) FROM (SELECT ..... 

이 왜 기록을 계산된다? 나는 카운트를 요구하지 않았다. 나는 단순히 가입 후 모든 열을 선택합니다 :

SELECT * FROM (SELECT ..... 

편집

좋아, 내가 @new_relationships와 함께 할 첫 번째 일이

@new_relationships.any? 

쿼리 때문에 때문에 일어나는 다음과 같습니다 느리게 실행됩니다. 검색어에 영향을주고 있습니다! 난 레일이 쿼리를 수행하고, 모든 레코드를 @new_relationships에 넣은 다음, 그것을 계산할 것이라고 생각했을 것입니다. 이것은 놀라운 특징입니다. 그렇다면 나는 어떻게 예방할 것인가? 쿼리에 영향을 줍니까? 즉, 의도 한대로 쿼리를 실행하고 결과를 나중에 계산하려면 어떻게해야합니까?

+0

이 출력은 레일 콘솔이나 서버 로그에서 출력됩니까? –

+0

서버 로그에 있습니다. – Bazley

+0

콘솔에서 해보고 SQL 쿼리를 보여주세요. –

답변

0

관계의 dup에서 테스트 할 수 있으므로 원본 관계 객체가 아닌 any?으로 수정되는 별도의 관계 객체가됩니다.

@new_relationships.dup.any?