Estamos utilizando hibernate con Oracle (11) y tenemos graves problemas de rendimiento debido al uso de 'ilike', el caso insensible 'me gusta'.cómo acelerar los criterios de hibernación 'consultas ilike' con la base de datos Oracle
La java/hibernación código es el siguiente:
c1.add(Restrictions.ilike("address", address));
lo que se traduce en una instrucción SQL como
select * from ACCOUNT where lower(ADDRESS_1) = ?
La función 'inferior' hace que sea imposible para Oracle para utilizar un índice que se traduce en una exploración de tabla completa.
Estaba pensando en introducir una nueva columna en la tabla db que contiene el menor contenido de la dirección. pude entonces utilizar:
c1.add(Restrictions.ilike("addressLCase", address.toLowerCase()));
... pero realmente no me gusta la idea de almacenar el contenido dos veces ...
Entonces pensé en la creación de un índice con minúsculas
CREATE INDEX ADDRESS_1_IDX ON ACCOUNT lower( ADDRESS_1 ) ;
pero esto no funcionó, ya que no puedo convencer al optimizador de utilizar este índice ...
Entonces, ¿qué puedo hacer para crear una consulta rápida con criterios de hibernación activos y de productos 'me gusta' ?