Recientemente tuve un fenómeno bastante extraño. Tuve que obtener un recuento que incluye uniones en varias tablas con diferentes condiciones WHERE. Implementé la consulta primero con los criterios API de hibernación. Creó correctamente la instrucción SQL preparada solicitada, pero fue bastante lenta. Re-implementé entonces toda la consulta usando HQL. Fue bastante desagradable hacerlo, pero el resultado fue mucho más rápido que con la API de Criteria. ¿Alguien sabe el motivo de ese comportamiento? Supuse que Criteria y HQL Framework usan la misma base de código para transformarlo a SQL.Hibernate Query vs Criteria Performance
Ésta es la consulta:
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 <=?)
¿Puede mostrar las consultas HQL y criterios? –
La consulta depende de los parámetros. Una de las más simples es statetments como la siguiente: select count (*) de R r, donde r.ISREPLACEDBY = 0 y r.STATUS = 'OK' y R. A =? R. C y en (seleccione RC distinta de CX cx donde cx.FROMDATE> =? y cx.FROMDATE <=?) – bertolami