--sunfruit
說明了Oracle數據庫中的索引隱式失效的問題
1、隱式轉換導致索引失效.這一點應當引起重視.也是開發中經常會犯的錯誤.
由于表的字段tu_mdn定義為varchar2(20),但在查詢時把該字段作為number類型以where條件傳給Oracle,這樣會導致索引失效.
錯誤的例子:select * from test where tu_mdn=13333333333;
正確的例子:select * from test where tu_mdn='13333333333';
2、對索引列進行運算導致索引失效,我所指的對索引列進行運算包括(+,-,*,/,! 等)
錯誤的例子:select * from test where id-1=9;
正確的例子:select * from test where id=10;
3、使用Oracle內部函數導致索引失效.對于這樣情況應當創建基于函數的索引.
錯誤的例子:select * from test where round(id)=10; 說明,此時id的索引已經不起作用了
正確的例子:首先建立函數索引,create index test_id_fbi_idx on test(round(id));
然后 select * from test where round(id)=10; 這時函數索引起作用了