我基本上是通过运行 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 个额外的查询来计算组件,这会减慢速度。我确信有更好的模式来获得我想要的相同结果。我怎样才能让事情加速?