7
我们在oracle(11)中使用hibernate,并且由于'ilike'的使用导致严重的性能问题,不区分大小写'like'。如何通过oracle数据库加速休眠标准'ilike queries'
化java /休眠的代码如下所示:
c1.add(Restrictions.ilike("address", address));
这导致在SQL语句等
select * from ACCOUNT where lower(ADDRESS_1) = ?
的“下部”功能使得它不可能为Oracle使用,这导致在索引全表扫描。
我正在考虑将新列引入包含地址小写内容的数据库表。 然后我可以使用:
c1.add(Restrictions.ilike("addressLCase", address.toLowerCase()));
...但我真的不喜欢这个主意来存储内容两倍...
后来我想用小写
创建索引CREATE INDEX ADDRESS_1_IDX ON ACCOUNT lower( ADDRESS_1 ) ;
但这并没有工作,因为我无法说服优化器使用该索引...
所以我能做些什么来创造与Hibernate API标准的快速查询, '我喜欢' ?