Korma页面上的文档说, 在实体下,
(has-many email)
;; assumes users.id = email.users_id
;; but gets the results in a second query
;; for each element
所以,如果我理解它是否正确,如果一位老师有很多学生,我希望所有学生都能在每个教师地图中嵌入教师, Korma会为每位老师生成一个SQL查询吗?
当我们有数百万老师的时候,这不会影响表现吗?
答案 0 :(得分:1)
是的,它将为每位老师执行1次额外请求以获取他们的学生。您可以在korma中查看with-later宏,它基本上添加了一旦korma检索到所有教师就会执行的功能。这个函数通过收集教导进行迭代,并为每个教师执行(select ...)
以获得他的学生并将他们附加到教师的地图上。
当我们拥有数百万教师时,这不会影响表现 ?
我认为这确实会损害表现。但是,通过加入教师和学生表,然后通过教师对学生进行分组,实现它可能会更加高效,实施起来更复杂,更容易出错。无论如何,查询数百万条记录并将它们转换为clojure中的地图将是内存和耗时的过程。