Oracle優化你的查詢 關於避免索引隱式失效

2021-05-23 17:24:11 字數 665 閱讀 1511

說明了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; 這時函式索引起作用了

關於Oracle資料庫的查詢優化

沒事兒嘮嘮it 2016 12 08 00 58 1 多表查詢時,資料量小的表放在靠右放。2 單錶查詢時,能夠過濾掉較大資料量的條件靠右放。3 查詢字段盡量避免使用 號,應直接羅列欄位名稱。4 儘量減少對資料庫的訪問次數。1 索引字段存在資料型別轉換 如數值字元轉換位數字,或字串轉換為日期等 2 索...

oracle查詢優化

1 in 操作符 用 in 寫出來的 sql的優點是比較容易寫及清晰易懂,這比較適合現代軟體開發的風格。但是用 in 的 sql 效能總是比較低的,從 oracle 執行的步驟來分析用 in 的 sql 與不用 in 的 sql有以下區別 oracle 試圖將其轉換成多個表的連線,如果轉換不成功則先...

oracle查詢優化

oracle的執行順序where子句中的條件是總是優先於其他條件的,並且越靠右越優先,包括group by order by等子句。根據執行順序我們可以總結出許多可以優化查詢的規律 1 將能最快篩選出最少條目的條件放在where條件最右側 2 not in 和 not exist的區別 not ex...