【发布时间】:2020-09-02 15:57:16
【问题描述】:
我正在使用 Spring JPA 从表中读取数据。 该实体对象与其他六个表具有一对多的关系。 所有表总共有 20,000 条记录。 我正在使用以下查询从数据库中获取数据。
SELECT * FROM A WHER ID IN (SELECT ID FROM B WHERE COL1 = '?')
一个表与其他 6 个表有关系。 Spring JPA 需要大约 30 秒的时间从 DB 中读取这些数据。 任何改善数据获取时间的想法都在这里。
我在这里使用本机查询,我正在寻找可以优化数据获取时间的查询重写。 请建议谢谢。
【问题讨论】:
-
是的,使用延迟加载。
-
但是我需要来自所有 6 个表的数据,延迟加载对我有帮助吗?
-
在这种情况下,我建议您使用该查询创建一个过程(6 个表)
-
TBH JPA 并不完全适合一次性将 20k 条记录提取到持久性上下文中。它会增加一些开销,只是为了将结果水合到对象中,而且您的代码实际上不太可能触发大量小的
SELECTs 来获取相关实体。如果我是你,我会考虑使用精心设计的原生查询(可能带有非实体结果)
标签: java sql spring hibernate jpa