【发布时间】:2010-12-19 13:40:26
【问题描述】:
我最近有一个很奇怪的现象。必须获得一个计数,其中包括具有不同 WHERE 条件的多个表的连接。我首先使用hibernate的标准API实现了查询。它正确地创建了请求的准备好的 SQL 语句,但速度相当慢。然后使用 HQL 重新实现整个查询。这样做相当讨厌,但结果比使用 Criteria API 执行得快得多。有人知道这种行为的原因吗?我假设 Criteria 和 HQL 框架使用相同的代码库将其转换为 SQL。
这里是查询:
select count(*) from R r where r.ISREPLACEDBY = 0
and r.STATUS='OK' and r.A = ?
and r.C in
(select distinct RC from CX cx where cx.FROMDATE >= ? and cx.FROMDATE <=?)
【问题讨论】:
-
你能显示 HQL 和 Criteria 查询吗?
-
查询取决于参数。一个更简单的语句如下所示: select count(*) from R r where r.ISREPLACEDBY = 0 and r.STATUS='OK' and r.A = ?和 r.C in(从 CX cx 中选择不同的 RC,其中 cx.FROMDATE >= ? 和 cx.FROMDATE
标签: performance hibernate