我们在 ObjectDB 中的查询性能存在很大问题,这是我们的代码。任何帮助,将不胜感激。
查询的第一个版本在 50 毫秒内给出来自数据库的前 40 条记录的结果,但查询 40 多条记录的第二个版本给出 19 秒。我们指出,从他的 53 记录性能显着下降。在其他查询阈值不同,可能由于结果的大小(可能与相关对象的数量有关)
第一个版本的代码。
EntityManagerFactory emf = Persistence.createEntityManagerFactory("objectdb://10.10.10.14/E_POLICIJA.odb;user=admin;password=admin"); //$非NLS-1$
em = emf.createEntityManager();
long startTime;
long endTime;
startTime = System.currentTimeMillis();
int i = 0;
while(i < 40){
TypedQuery<AktImpl> queryAkt =
em.createQuery("SELECT e FROM AktImpl e", AktImpl.class);
queryAkt.setFirstResult(i);
queryAkt.setMaxResults(20);
queryAkt.getResultList();
i += 20;
}
endTime = System.currentTimeMillis();
System.out.println((endTime - startTime));
}
第二版代码
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("objectdb://10.10.10.14/E_POLICIJA.odb;user=admin;password=admin"); //$NON-NLS-1$
em = emf.createEntityManager();
long startTime;
long endTime;
startTime = System.currentTimeMillis();
int i = 0;
while(i < 60){
TypedQuery<AktImpl> queryAkt =
em.createQuery("SELECT e FROM AktImpl e", AktImpl.class);
queryAkt.setFirstResult(i);
queryAkt.setMaxResults(20);
queryAkt.getResultList();
i += 20;
}
endTime = System.currentTimeMillis();
System.out.println((endTime - startTime));
}
谢谢你的帮助