Sql 为什么Jpa N+;有那么糟糕的事情吗?
我知道我们必须避免这种行为,使用join-fetch,而不是让JPA通过进行多个查询来管理它,但问题是:既然我们在同一个会话中调用所有查询,为什么性能如此糟糕? 范例: 我的问题是关于性能,最后一个的理由是什么Sql 为什么Jpa N+;有那么糟糕的事情吗?,sql,jpa,Sql,Jpa,我知道我们必须避免这种行为,使用join-fetch,而不是让JPA通过进行多个查询来管理它,但问题是:既然我们在同一个会话中调用所有查询,为什么性能如此糟糕? 范例: 我的问题是关于性能,最后一个的理由是什么 谢谢,因为在运行查询时,不仅仅是检索数据。其他阶段可能相当昂贵。举几个例子: 准备连接 查询通过线路发送到数据库服务器 数据库引擎解析查询。缓存已填充 db引擎重写/重新表述查询以满足内部需求 缓存已被检查。否则将填充和管理 db引擎评估查询的多个执行计划 db引擎以某种方式选择最佳
谢谢,因为在运行查询时,不仅仅是检索数据。其他阶段可能相当昂贵。举几个例子:
此外,一旦一个I/O操作一次检索多行,您将不必要地丢弃其中的许多行。我不理解您的观点,我很感激。.但是,由于我们在同一个会话中与JPA合作,我认为我们不需要准备连接,还要担心你所经历的大部分阶段describem@BrunoSerqueira如果你使用的是“连接池”(你可能是因为JPA),你不需要考虑步骤1。但是,您仍然受到所有其他步骤的影响。
Select * from person
Select * from accounts
Select * from person p left join fetch p.accounts