私は基本的に、JPQL クエリを実行することにより、datanucleus を介して適切なサイズの結果セット (数千) を取得しています。これらのそれぞれについて、別のテーブルからの参照の数も調べたいと思います。データは MySQL データベースにあります。
例えば:
List<Instrument> instruments = em().createQuery("SELECT i FROM Instrument AS i").getResultList();
for(Instrument i : instruments)
{
Query q = em().createQuery("SELECT COUNT(c) FROM Component AS c WHERE c.instrument.id = :id")
q.setParameter("id", i.getId());
long count = (Long) q.getSingleResult();
}
したがって、基本的には、上記の例のように、楽器のリストと、楽器に取り付けられたコンポーネントのリストが必要です。
私は多くの場所で同様のコードを使用しましたが、パフォーマンスはかなり悪いです。2000 個のインストゥルメントの場合、コンポーネントをカウントするために 2000 個のクエリを追加で実行すると、速度が低下することを理解しています。私が望むのと同じ結果を得るためのより良いパターンがあると確信しています。どうすれば高速化できますか?