我最近有一個相當奇怪的現象。必須獲得一個計數,其中包括使用不同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和條件查詢? – 2009-11-23 18:46:58
查詢取決於參數。其中一個較簡單的陳述如下所示: 從R r中選擇count(*),其中r.ISREPLACEDBY = 0且r.STATUS ='OK'且r.A =?和r.C in(從CX cx中選擇不同的RC,其中cx.FROMDATE> =?和cx.FROMDATE <=?) – bertolami 2009-11-24 12:37:10