0

Korma 页面上的文档说,在实体下,

(has-many email)
      ;; assumes users.id = email.users_id
      ;; but gets the results in a second query
      ;; for each element

所以,如果我理解正确,如果一位老师有很多学生,并且我希望所有学生都嵌套在每个教师地图中,那么 Korma 将为每个教师生成一个 SQL 查询?

当我们拥有数以百万计的老师时,这不会影响表现吗?

4

1 回答 1

1

是的,它将为每位教师执行 1 个额外请求以获取学生。您可以在 korma 中检查with-later宏,它基本上添加了在 korma 检索到所有教师后将执行的功能。此函数通过收集教员进行迭代,并(select ...)为每位教师执行以获取他的学生并将他们附加到教师的地图。

当我们拥有数以百万计的老师时,这不会影响表现吗?

我相信它确实会损害性能。但是,通过加入教师和学生表然后按教师分组学生可能更有效地实施它,实施起来更复杂,更容易出错。无论如何,查询数百万条记录并将它们转换为 clojure 中的映射既是内存又是耗时的过程。

于 2013-12-05T16:16:20.543 回答