Clojure Korma中的with子句是否对关系中的每个项触发一个查询?
Korma page的文件说, 在实体项下Clojure Korma中的with子句是否对关系中的每个项触发一个查询?,clojure,korma,sqlkorma,Clojure,Korma,Sqlkorma,Korma page的文件说, 在实体项下 (has-many email) ;; assumes users.id = email.users_id ;; but gets the results in a second query ;; for each element 所以,如果我理解正确的话,如果一个老师有很多学生,我希望所有的学生都是嵌套在每个教师地图中的老师, Korma将为每个教师生成一个SQL查询 当我们有数以百万计的教师时,这不会影响绩效吗
(has-many email)
;; assumes users.id = email.users_id
;; but gets the results in a second query
;; for each element
所以,如果我理解正确的话,如果一个老师有很多学生,我希望所有的学生都是嵌套在每个教师地图中的老师,
Korma将为每个教师生成一个SQL查询
当我们有数以百万计的教师时,这不会影响绩效吗?是的,它将为每位教师执行一个额外的请求,以获得他们的学生。您可以在korma中检查宏,它基本上添加了一个函数,一旦korma检索到所有教师,就会执行该函数。此函数通过集合迭代器教授并执行选择。。。让每位老师把他的学生带到老师的地图上 当我们有数以百万计的老师时,这不会影响我们的表现吗 ?
我相信这确实会影响表现。但是,通过连接教师和学生表,然后由教师对学生进行分组,可能会以某种方式更有效地实现它,这样实现起来更复杂,也更容易出错。无论如何,在clojure中查询数百万条记录并将其转换为映射将是一个既占用内存又耗时的过程 如果您需要查找教师列表中的学生,最好将查询倒置,如:select*from STUDER\ U id所在的学生。您还可以使用offset+limit批量获取结果。