我有3个课程:
大学:
id, name, ....
学生:
id, name, college, ....
标记:
id, subject, student
我有 collegeObject 和我的学生列表。我可以通过两种方式查询学生的成绩:
JPA属性表达式:
List<Marks> findByStudentCollege(College college)
。
在查询中使用
List<Marks> findByStudentIn(Set<Student> studentList)
从性能的角度来看,我需要帮助来了解哪种查询更合适。
答案 0 :(得分:1)
您要执行两个不同的查询:
findByStudentCollege(大学学院):这将用于在“学院”中每个“学生”元素中查找大学的分数。您没有在商标和大学之间建立联系,因此您可能会进行如下查询:“从学生=(从学生那里选择id到大学=(从大学选择)的标记中选择*)
findByStudentIn(Set studentList):这将用于查找列表中的分数(0个或多个“ student”元素,因此您需要在之前列出学生,或使用它查找一个学生的分数专注。
如果您没有完整的学生名单,第二个可能是最好的选择。如果您拥有一所大学的所有学生,则使用第一个,因为您正在避免第一个学生名单。
无论如何,即使您正在处理5k +行,您也不会看到这些查询之间的差异
答案 1 :(得分:0)
您应该尝试使用findByStudentCollegeId,这比传递整个对象进行查询要好