我知道我们必须避免这种行为,使用联接获取而不是让JPA通过执行多个查询来管理它,但是问题是:为什么由于在同一会话中调用所有查询,所以它的性能如此差?
示例:
Select * from person
Select * from accounts
Select * from person p left join fetch p.accounts
我的问题只是关于性能,最后一个的理由是什么更具表现力?
谢谢
答案 0 :(得分:2)
因为运行查询时不仅检索数据。其他阶段可能会非常昂贵。仅举几例:
您可能已经考虑到查询仅包括查询运行阶段,而实际上,数据库正在执行许多其他任务。
此外,一旦单个I / O操作立即检索到许多行,您将不必要地丢弃其中的许多行。