Oracle索引掃描

來源:互聯網
上載者:User

標籤:orace索引

  1. 索引唯一掃描:是針對唯一性索引大掃描,它僅僅適用於where條件裡是等值查詢的目標SQL,因為掃描的對象是唯一性索引,只掃描索引高度這麼多個索引塊就停止了,索引的唯一掃描的結果至多隻返回一條記錄,索引的唯一掃描,掃描索引高度-2個分支塊,永遠只掃描一個葉子塊

  2. 索引範圍掃描:索引範圍掃描,掃描索引高度-2個分支快,要掃描N多葉子塊,取決於where條件,索引範圍掃描是單塊讀,因為實體儲存體是不連續的。select * from test where id<=1000;訪問路徑:ROOT -B1 -L1 -L7

     

 

 

索引是排序的,從左至右升序排,最左最小,最右做大,索引預設從左向右掃描,也可以加hint倒著掃描:

SQL> select /*+ index_desc(test) */*from test where object_id<=20;19 rows selected.Execution Plan----------------------------------------------------------Plan hash value: 1069979465---------------------------------------------------------------------------------------| Id  | Operation       | Name   | Rows  | Bytes | Cost (%CPU)| Time     |---------------------------------------------------------------------------------------|   0 | SELECT STATEMENT      |       |    19 |  3933 |     3 (0)| 00:00:01 ||   1 |  TABLE ACCESS BY INDEX ROWID | TEST   |    19 |  3933 |     3 (0)| 00:00:01 ||*  2 |   INDEX RANGE SCAN DESCENDING| IDX_ID |    19 |       |     2 (0)| 00:00:01 |---------------------------------------------------------------------------------------

3.索引的葉子塊只存rowid和列的索引值,比表的資料區塊存的更多的值,

select object_id from test where object_id<100;
select object_id from test where object_id<1000

效能是一樣的,索引掃描最大問題在於回表,如果回表再過濾,就最坑爹了,錯誤的INDEX RANGE SCAN,返回資料很多和大量回表

4.反鍵索引,

如果用sequence作為主鍵,如果insert資料,會不斷更新右邊的葉子塊,dml操作,同一個塊,同時只有一個進程去持有,CBC持有,latch: cache buffers chains,在高並發的insert環境中,sequence主鍵很容易產生熱點塊,解決辦法,把主鍵處理成隨機的,比如手機號或者***號,如果已經用sequence,可用反轉索引把葉子塊打亂來解決。另外一種解決辦法:sid+sequence+pid,反鍵索引多範圍掃描影響大。

5. INDEX SKIP SCAN 索引跳躍掃描。單塊讀 只可能發生在複合式索引上,引導列(複合式索引第一列)沒有包含在where條件中,並且引導列基數很低。INDEX SKIP SCAN 一般來說只會返回少量資料,如果返回大量資料,說明該執 行計劃可能有問題,也就是說索引建立不對。等待事件:db file sequential read HINT: INDEX_SS(表名/別名 索引名)

 

Oracle索引掃描

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.