0

我正在执行以下查询:

TaskCheck.find_by_sql ["SELECT task_checks.*, tasks.* FROM task_checks INNER JOIN tasks ON task_checks.task_id = tasks.id"]

它返回 TaskCheck 对象,但是当我尝试读取任务字段(加入查询)时,ActiveRecord 会为每个对象执行单独的选择查询。即使我加入它,它也会延迟加载我的协会。我该如何解决?

PS:我想用纯SQL。原因是因为 AR“包含”方法为关联执行了第二个 SELECT,这对于一对一关联来说是无效的,我希望获得尽可能好的性能。

4

1 回答 1

0

有一种方法可以让您指定所需的列,如下所示:

sql = "SELECT task_checks.*, tasks.* FROM task_checks INNER JOIN tasks ON task_checks.task_id = tasks.id"
records_array = ActiveRecord::Base.connection.execute(sql)

然后,records_array 将包含选择查询中具有指定列的所有返回行。

于 2013-04-29T18:23:15.690 回答