ObjectDB のクエリ パフォーマンスに大きな問題があります。これが私たちのコードです。どんな助けでも大歓迎です。
クエリの最初のバージョンでは、データベースからの最初の 40 レコードに対して 50 ミリ秒の結果が得られますが、40 以上のレコードをクエリする 2 番目のバージョンでは 19 秒になります。53回の記録からパフォーマンスが大幅に低下することを突き止めました。他のクエリでは、しきい値が異なります。結果のサイズが原因である可能性があります (おそらく関連オブジェクトの数に関連しています)。
コードの最初のバージョン。
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 < 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));
}
コードの 2 番目のバージョン
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));
}
助けてくれてありがとう