我有3个班:
学院:
id, name, ....
学生:
id, name, college, ....
分数:
id, subject, student
我有collegeObject和我的学生名单。我可以通过两种方式查询学生的标记:
JPA财产表达:
List<Marks> findByStudentCollege(College college)
。
在查询中使用
List<Marks> findByStudentIn(Set<Student> studentList)
从性能角度来看,我需要帮助知道哪个查询更好用。
您正在执行两个不同的查询:
findByStudentCollege(大学学院):这个将用于在“大学”中的每个元素“学生”中找到学院的标记。你没有在分数和大学之间建立联系,所以你可能会做一个查询,比如“选择*来自学生的标记=(从学生那里选择id =大学=(从大学中选择))
findByStudentIn(设置studentList):这个将用于查找列表中的标记(0个或更多“学生”元素,因此您需要先列出学生,或使用它来查找一个焦点的学生的标记。
如果你没有完整的学生名单,第二个可能是最好的选择。如果你有一所大学的所有学生使用第一个学生,因为你正在避开第一个学生名单。
无论如何,即使你正在使用5k +行,你也不会看到这些查询之间的区别
你应该试试findByStudentCollegeId,它比传递整个对象更好