ABX*_*ABX 7 oracle performance hibernate
我们正在使用hracle与oracle(11),并且由于使用了'ilike',不区分大小写'喜欢'而导致严重的性能问题.
java/hibernate代码如下所示:
c1.add( Restrictions.ilike("address", address) );
Run Code Online (Sandbox Code Playgroud)
这导致sql语句如
select * from ACCOUNT where lower(ADDRESS_1) = ?
Run Code Online (Sandbox Code Playgroud)
'lower'函数使oracle无法使用导致全表扫描的索引.
我正在考虑向db表引入一个新列,其中包含小写的地址内容.然后我可以使用:
c1.add( Restrictions.ilike("addressLCase", address.toLowerCase()) );
Run Code Online (Sandbox Code Playgroud)
...但我真的不喜欢将内容存储两次的想法......
然后我想到用小写创建一个索引
CREATE INDEX ADDRESS_1_IDX ON ACCOUNT lower( ADDRESS_1 ) ;
Run Code Online (Sandbox Code Playgroud)
但是这没用,因为我无法说服优化器使用这个索引......
那么我该如何使用hibernate准则API和'ilike'创建快速查询?
| 归档时间: |
|
| 查看次数: |
3886 次 |
| 最近记录: |