Oracle尋找資料的方法

來源:互聯網
上載者:User

  在Oracle 10g有幾種尋找資料的方法,瞭解這些尋找資料的方法,有利於我們讀懂執行計畫,並通過執行計畫來最佳化我們的ORacle資料庫系統。尋找資料主要有以下方式:

全表掃描和RowId尋找資料

1.1 全表掃描(Full Table Scans)

  有時Oracle資料庫在評估最優執行計畫時,當去取大量資料時,就會優先考慮使用全表掃描,因為這時全表掃描是最優的。一般取出的資料占表的資料5%--10%左右會發生表掃描,一般在OLTP系統中盡量避免表掃描。為了更好的使用表掃描,提高效率,在oracle 中有好幾種分區方法,提高表掃描的效率,讓表按具體商務邏輯來分區,盡量做到分區消除,減少表掃描的大小,提高效能。

1.2 ROWID尋找資料(Table Access by ROWID 或 Rowid lookup)

  行ROWID是行資料在資料庫檔案,資料區塊和行在塊的具體位置,所以是Oracle最快的定位方法。這種方法只能一次讀取一個IO,不會涉及多個IO。

通過索引尋找資料

目前通過索引尋找,主要有5種索引尋找方式:

1.索引唯一尋找(index unique scan)

2.索引範圍尋找 (index range scan)

3.索引全部掃描 (index full scan)

4.索引快速掃描 (index fast full scan)

5.索引跳躍式尋找 (index skip scan)

2.1 索引唯一尋找(index unique scan)

  當查詢列是 如果存在UNIQUE 或PRIMARY KEY 約束(它保證了語句只存取單行)的話,Oracle經常實現唯一性掃描。此尋找方法效率很高。

2.2 索引範圍尋找 (index range scan)

  使用一個索引存取多行資料,在唯一索引上使用索引範圍掃描的典型情況下是在謂詞(where限制條件)中使用了範圍操作符(如>、<、<>、>=、<=、between)

2.3 索引全部掃描 (index full scan)

  全索引掃描。對查詢出的資料進行排序,而且此時查詢出的資料都必須從索引中可以直接得到。同時order by排序的資料應該是按索引的順序來讀取的。 如下:explain plan for select empno,ename from big_emp order by empno,ename

2.4 索引快速掃描 (index fast full scan)

  與 index full scan很類似,但是一個顯著的區別就是它不對查詢出的資料進行排序,即資料不是以排序次序被返回,在這種存取方法中,可以使用多塊讀功能,也可以使用並行讀入,以便獲得最大輸送量與縮短執行時間,索引快速全域掃描,不帶order by情況下常發生。如下:explain plan for select empno,ename from big_emp

2.5 索引跳躍式尋找 (index skip scan)

  where條件列是非索引的前置列情況下常發生。如下:create index i_emp on emp(empno, ename);      select /*+ index_ss(emp i_emp)*/ job from emp where ename='SMITH';

總結:

  index full scan (索引全掃描):有排序,就是利用到了index的排序功能。原理:通過root根級----到中間級---葉級。

  index fast full scan (索引快速掃描): 無排序,就可以利用多塊讀取方式,提高查詢速度,因為資料要求是無序的。即可以使用多塊查詢,取出的資料就是資料存放的順序。

  當進行index full scan的時候 oracle定位到索引的root block,然後到branch block(如果有的話),再定位到第一個leaf block, 然後根據leaf block的雙向鏈表順序讀取。它所讀取的塊都是有順序的,也是經過排序的。而index fast full scan則不同,它是從段頭開始,讀取包含位元影像塊,root block,所有的branch block, leaf block,讀取的順序完全有實體儲存體位置決定,並採取多塊讀,每次讀取db_file_multiblock_read_count個

 

 

相關文章

聯繫我們

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