【发布时间】:2018-05-14 05:24:29
【问题描述】:
我编写了一个 SpringMVC 代码来将 PostgreSQL 数据库导出到 ndjson 文件,该代码有效。但是,其中一张表需要 10 秒(Careplan)来记录 100 条记录!
以下是DAO类的代码
public List<DafCarePlanParticipant> getCarePlanparticipantByCareTeam(int id)
{
Criteria criteria = getSession().createCriteria(DafCarePlanParticipant.class, "dp").add(Restrictions.eq("careteam", id));
List<DafCarePlanParticipant> dafCareTeam = criteria.list();
return dafCareTeam;
}
我在优化此代码时遇到了死胡同。请帮我看看好吗!
谢谢!
【问题讨论】:
-
getSession是做什么的。你的DafCarePlanParticipant有多复杂(它真的是一张表还是一半的数据库,里面有所有关系)你真的需要检索所有东西吗(这就是list正在做的事情)为什么不懒惰地获取东西(使用stream方法)。 -
如果您在
careteam列上没有索引并且您的表足够大,那么您应该期待这种行为。如果这是原因,请在列careteam上创建索引。 -
先生,我该怎么做?懒惰的抓取。
-
我不会为你审查你的代码(或做你的工作)。所以我不打算下载代码并查看它(如果您认为它会添加到您的问题中,请将代码(sn-ps)添加到您的问题中)。还可以使用分析器并检查占用时间的内容。
标签: java spring postgresql spring-mvc