0

저는 쿼리를 향상시키기 위해 노력하고 있습니다. 결과적으로 애플리케이션의 성능이 향상되었습니다.내부에서 조인을 사용하는 방법은 레일스의 활성 레코드 쿼리에 포함됩니까?

이메일 테이블을 사용하여 조건을 충족시키고 싶었 기 때문에 이메일 테이블을 eagerload 할 필요가 없으므로 조인을 선호합니다. 그러나 나는 알아낼 수 없으며, 함께 사용하고 함께 사용하는 방법을 알고 있습니까?. 그것은 부모를 eagerload 및 이메일로 결합되어서 너무

+0

당신이 필요하지 무엇을 의미합니까 읽어 보시기 바랍니다, 당신은'emails' 테이블이 null이 될 수 있음을 의미? – Lymuel

+0

'Student.joins (: parents => : emails)'를 사용해 보셨습니까? 결과가 예상했던 것과 어떻게 다릅니 까? 읽었습니까? http://guides.rubyonrails.org/active_record_querying.html#joining-tables –

+0

그러면 부모 레코드를 eagerload하는 방법, 조인을하면 부모에 대해 n + 1 쿼리가 생성됩니까? –

답변

4

당신은 함께 chainging 모두이 작업을 수행 :

Student.joins(parents: :emails).includes(:parents).where("emails.email_address is not null and emails.email_address != ''")

작동 방법은 joins는이 JOIN 만의 데이터 중 하나를 KEP하지 만들 것입니다 메모리가있는 반면에 includes은 메모리에 데이터를 미리로드하지만 조인은 생성하지 않습니다.

내가 http://tomdallimore.com/blog/includes-vs-joins-in-rails-when-and-where/