ORACLE索引被抑制情況
前言、在做資料庫調優的很多情況下,都可以透過增加索引來提高資料庫的效能,但是有些情況下DBA也是無能為力的,因為該有的索引都已經建立了,但是由於開發人員所寫的SQL語句的問題導致不能走索引,那麼這種情況下就需要修改語句來;
測試環境的說明:
情況一、TO_CHAR和TO_DATE的使用
以下兩條語句實現的功能都是一樣的,但是兩條的執行計劃是不一樣的,有一條會走索引,還有一條不走索引:
select count(*) From JOHN WHERE LASTRUNTIME>TO_DATE('2014-03-05 11:00:00','yyyy-MM-dd HH24:mi:ss');
select count(*) From JOHN WHERE TO_CHAR(LASTRUNTIME,'yyyy/MM/dd HH24:mi:ss')>'2014-03-05 11:00:00';
原因:JOHN_TIME索引記錄的是DA他的值,而不是to_char後的值,所以語句一會走索引,語句二走全表掃描;
情況二、在條件中使用表示式
select count(*) From JOHN WHERE LASTRUNTIME>SYSDATE-100;
select count(*) From JOHN WHERE LASTRUNTIME-100>SYSDATE;
原因:JOHN_TIME索引記錄的是DA他的值,而不是DATA-100後的值;
總結:1、不要輕易在欄位前增加函授;
2、儘量不要將欄位嵌入到表示式中;
總而言之:就是有索引的那列不能進行任何的相關操作,單獨的放在等式的一邊;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
本文作者:JOHN
ORACLE技術部落格:ORACLE 獵人筆記 資料庫技術群:367875324 (請備註ORACLE管理 )
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-1175609/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12.2中的索引統計被呼叫情況Oracle索引
- oracle order by索引是否使用的情況Oracle索引
- [zt] Oracle不使用索引的幾種情況Oracle索引
- oracle組合索引什麼情況下生效?Oracle索引
- mysql索引失效的情況MySql索引
- MySQL哪些情況需要新增索引?MySql索引
- Oracle like、不等於、隱式轉換走索引與不走索引情況Oracle索引
- 被動式監控oracle的rman備份情況Oracle
- Nagios 被動檢測oracle Rman備份情況iOSOracle
- oracle 為什麼沒有使用索引的一種情況Oracle索引
- 基於COST優化,oracle什麼情況不走索引優化Oracle索引
- mysql索引不會命中的情況MySql索引
- ORACLE MYSQL中join 欄位型別不同索引失效的情況OracleMySql型別索引
- Mysql 會導致索引失效的情況MySql索引
- 【轉】Oracle:檢查被鎖資料在V$LOCK中的情況Oracle
- MYSQL索引失效的各種情況小結MySql索引
- Oracle 時段負載情況Oracle負載
- Oracle其它情況的恢復Oracle
- SQL優化--強制走索引失效的情況SQL優化索引
- Java類什麼情況下被初始化?Java
- ubuntu 下解決埠被佔用的情況Ubuntu
- 簡單介紹MySQL索引失效的幾種情況MySql索引
- Oracle 索引的使用情況檢視Oracle索引
- 監控Oracle索引的使用情況Oracle索引
- 監控Oracle索引是否被使用?Oracle索引
- Oracle 查詢DB的負載情況Oracle負載
- Oracle什麼情況下需要rebuild indexOracleRebuildIndex
- 在oracle中監視索引的使用情況Oracle索引
- SQL SERVER中什麼情況會導致索引查詢變成索引掃描SQLServer索引
- Android下檢視SO庫被依賴的情況Android
- oracle dg 歸檔日誌恢復情況Oracle
- ORACLE程式佔用CPU情況分析(轉載)Oracle
- 檢查oracle的patch的升級情況Oracle
- 監控oracle的連線(session)情況[Z]OracleSession
- 模擬線上重做日誌被刪除的情況恢復
- Oracle 無備份情況恢復ocr和olrOracle
- Oracle -- left join 什麼情況可以直接改成joinOracle
- EMC 故障情況下ORACLE 救火行動(之二)Oracle