Index Full Scan 與 Index Fast Full Scan (Final)

tolywang發表於2010-08-24

 

Index Full Scan (索引全掃描)   

當進行index full scan的時候,oracle定位到索引的root block,
然後到branch block(假如有的話),再定位到第一個leaf block, 然後
根據leaf block的雙向連結串列順序讀取。它所讀取的塊都是有順序的,也是
經過排序的,所以index full scan可以用來避免某些sort操作。查詢出的
資料都必須從索引中可以直接得到。   這個full scan的名字有點誤導人,
其實並不是所有的index block都被讀取的,某些分支塊是不會讀到的。

1.   查詢出來的資料都必須從Index中可以直接得到。  

2.   Index中至少有一個欄位是非空 。 

3.   可以消除掉排序操作,因為資料已經被index key 排好序了 。 

4.   它一個一個地讀取block,  不能多塊讀 。也不能並行。

 

Index Fast Full Scan (索引快速全掃描) 


而index fast full scan則不同,它是從段頭開始,讀取包含點陣圖塊,
root block, 所有的branch block, leaf block,讀取的順序完全由物理存
儲位置決定,並採取多塊讀,每次讀取db_file_multiblock_read_count個塊。
因為能並行或多塊讀,index fast full scan不能用來消除sort操作。 

1.   這種Index Fast Full Scan 只有在CBO下有效

2.   需要分析Index , 否則最佳化程式可能不會用它

3.    在Index中取資料,而不是存取table中的資料

4.    Index中至少一個欄位是非空

5.    不能消除排序操作, 因為資料沒排序

6.    與Index Full Scan不一樣,用多塊讀方式讀整個Index 

7.    Index Fast Full Scan 比 正常的Index Full Scan 更快,因為能用多塊讀方式,且能並行執行

8.     Index Fast Full Scan 並行和表的並行是分開的, 可以透過Parallel 來設定 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-671692/,如需轉載,請註明出處,否則將追究法律責任。

相關文章