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標準的快速查詢, '我喜歡' ?