我有一个复杂的SQL查询,该查询连接多个表并调用某些函数进行某些数据计算。甚至,我已经将它变成了 View ,以便构建一个舒适的JPA实现来获取数据。基本SQL查询在数据库上运行时需要2秒。但是,通过Spring Boot应用程序执行该操作会花费80秒。
我以几种方式进行了测试,结果也相同:
- 通过从JPA实体管理器构建本机查询对象
Query typedQuery = entityManager.createNativeQuery(sql,Result.class);
- 通过创建视图的映射实体并使用CriteriaSpecification进行查询
CriteriaBuilder builder = entityManager.getcriteriaBuilder();
CriteriaQuery<ViewResult> query = builder.createQuery(ViewResult.class);
Root<ViewResult> r = query.from(ViewResult.class);
Predicate predicate = builder.conjunction();
...
query.where(predicate);
TypedQuery<ViewResult> typedQuery = entityManager.createQuery(query);
return typedQuery.getResultList();
- 通过使用JDBC和Resulset实现(迭代结果集以构建所需的列表)
是否有一种技术可以在数据库管理器中运行时获得接近延迟时间的结果?