深入理解Oracle索引(23):6 種常見不走索引的原因分析

來源:互聯網
上載者:User
      有時候、挺鬱悶的、丫的、咋回事啊、就不走索引、
      如果、你發現不走索引、卻莫冒失強加自己的意志、
      總得給出理由吧、做個測試先、證實/偽走索引切實明智
      否則、可能會返回錯誤的結果、也可能導致效能下降
      
      下面就常見不走索引的 6 種原因簡要分析一下、做到心裡有底
      
      
      ㈠ 違背複合索引"首碼性"原理
         
         謂詞沒有使用索引前置列
         
      
      ㈡ 隱式轉換
         
         舉個例子吧、假設我在字元列上建立個索引、然後:
         
         select * from t  where index_column = 8;
         
         這條語句實際上會被等價於:
         
         select * from t where to_number(index_column) = 8;
         
         一定要儘可能避免隱轉、
         自己跟自己比就行了、"別人家的孩子"就讓他們自己搗鼓去吧
         
         
      ㈢ 索引列被汙染
         
         這個我之前的文章有寫到、這裡就不贅述
         如何避免索引列被汙染
         
         第二點、從本質上而言、和三是一樣的、都是索引列被汙染
         
      
      ㈣ select count(*) from t;(或類似查詢)
         
         記住了、索引中的行數並不總是等於基表的行數的、因為
         索引不儲存全為NULL 的列
         
      
      ㈤ 25%
         
         25% 雖然是個經驗值、但我更願意這樣叫
         當業務需要檢索表中資料超過某個閥值、CBO 就認為、走索引沒啥意義鳥
         
      
      ㈥ 有一段時間木有分析表了
         
         統計資訊到期變質了

         別偷懶哈、



By David Lin

2013-06-11

Good Luck

         

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.