如何在 rails 活动记录查询中使用包含的连接?
How to use joins inside includes in rails active record query?
我只是想改进查询,以提高应用程序的性能。
Student.includes(:parents =>:emails).where("emails.email_address is not null and emails.email_address != ''")
我只是想满足使用电子邮件 table 的条件,所以显然不需要预先加载电子邮件 table,相反我更喜欢加入。但我无法弄清楚,如何使用 includes 和 joins 在一起?。这样它就应该 eagerload parents 并通过电子邮件加入
你可以通过将两者链接在一起来做到这一点:
Student.joins(parents: :emails).includes(:parents).where("emails.email_address is not null and emails.email_address != ''")
它的工作方式是 joins
会创建一个 JOIN
但不会在内存中保留任何数据,而 includes
会在内存中预加载数据但不会创建加入。
我建议阅读此博客 post:https://web.archive.org/web/20200804112405/http://tomdallimore.com/blog/includes-vs-joins-in-rails-when-and-where/
我只是想改进查询,以提高应用程序的性能。
Student.includes(:parents =>:emails).where("emails.email_address is not null and emails.email_address != ''")
我只是想满足使用电子邮件 table 的条件,所以显然不需要预先加载电子邮件 table,相反我更喜欢加入。但我无法弄清楚,如何使用 includes 和 joins 在一起?。这样它就应该 eagerload parents 并通过电子邮件加入
你可以通过将两者链接在一起来做到这一点:
Student.joins(parents: :emails).includes(:parents).where("emails.email_address is not null and emails.email_address != ''")
它的工作方式是 joins
会创建一个 JOIN
但不会在内存中保留任何数据,而 includes
会在内存中预加载数据但不会创建加入。
我建议阅读此博客 post:https://web.archive.org/web/20200804112405/http://tomdallimore.com/blog/includes-vs-joins-in-rails-when-and-where/