这是我的第一篇文章,我通常会在这里找到答案,但这次我很难过。
下面是两个sql查询 - 首先获取值然后执行" sum"结果几乎将持续时间减半,但用Hibernate Criteria复制这个并不是那么直接。
从相关帖子中我发现看起来答案很可能是一些DetachedCriteria函数,但是我找不到任何与" sum"一起使用的例子。
SELECT (COUNT(DISTINCT(account))) FROM history;
duration 6363ms
SELECT COUNT(*) FROM (SELECT DISTINCT account);
duration 3624ms
我的第一个查询的Hibernate标准:
Session session = sessionFactory.openSession();
ProjectionList proj = Projections.projectionList()
.add(Projections.countDistinct("account"));
Criteria crit = session.createCriteria(History.class)
.setProjection(proj);
System.out.println(crit.list());