Ich hatte vor kurzem ein ziemlich seltsames Phänomen. Er musste eine Anzahl erhalten, die Joins über mehrere Tabellen mit unterschiedlichen WHERE-Bedingungen enthielt. Ich habe die Abfrage zuerst mit der Kriterien-API von Hibernate implementiert. Es hat die angeforderte vorbereitete SQL-Anweisung korrekt erstellt, war aber ziemlich langsam. Re-implementiert dann die gesamte Abfrage mit HQL. War ziemlich unangenehm, aber das Ergebnis war viel schneller als mit der Kriterien-API. Kennt jemand den Grund für dieses Verhalten? Ich nahm an, dass das Criteria- und das HQL-Framework die gleiche Codebasis verwenden, um es in SQL zu transformieren. HierHibernate Query vs Kriterien Leistung
ist die Abfrage:
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 <=?)
Können Sie die HQL und Kriterien Abfragen zeigen? –
Die Abfrage hängt von den Parametern ab. Eines der einfacheren Statements ist das folgende: Wählen Sie count (*) aus R r wobei r.ISREPLACEDBY = 0 und r.STATUS = 'OK' und r.A =? und r.C in (select distinct RC von CX cx where cx.FROMDATE> =? und cx.FROMDATE <=?) – bertolami