Korma页面上的文档说,在实体下,
(has-many email)
;; assumes users.id = email.users_id
;; but gets the results in a second query
;; for each element
所以,如果我理解正确的话,如果一个老师有很多学生,并且我希望所有学生都是嵌套在每个老师地图中的老师,Korma将为每位教师生成一个SQL查询?
当我们有数以百万计的老师时,这不会影响我们的表现吗?
是的,它将为每个老师执行1个额外的请求,以获取他们的学生。您可以在korma中查看稍后的宏,它基本上添加了一个函数,该函数将在korma检索到所有教师后执行。这个函数遍历教学集合,并为每个教师执行(select ...)
,以获取他的学生并将他们附加到教师的地图上。
当我们有数百万的老师时,这不会影响我们的表现吗?
我相信这确实会影响表现。但是,通过加入教师和学生表,然后按教师对学生进行分组,可能会以某种方式更有效地实现它,但实现起来更复杂,也更容易出错。无论如何,在clojure中查询数百万条记录并将其转换为映射将是一个既消耗内存又耗时的过程。