1. 程式人生 > >溫故而知新之:IUS、IFS、IFFS

溫故而知新之:IUS、IFS、IFFS

INDEX SCAN

IFS: 索引全掃描這裏要註意的一點就是不需要掃描所有branch的分支塊,因為葉子塊與葉子塊之間有雙向指針,所以找到最左邊的葉子塊,就可以依序掃描。所以這裏可以有

兩個結論:1 索引鍵值是排序的,不需要額外對索引鍵值再一次order 2 通常情況下依序讀取則是單塊讀,因為多塊離散讀,你就滿足不了依序這個條件了。3 通常情況IFS不建議再回表,所以索引全掃描更適合: 1 SQL查詢列全在索引鍵值裏,如果隱式對數據的排序有要求,那麽索引的鍵值列的順序也最好設計合理。order a b c ------ index (a,b,c)

IFFS: 通常IFFS都會拿來與IFS進行比較,那麽下面我們來小計一下區別:

1 IFFS 只適用於CBO 2 IFFS使用多塊讀,並且可以並行執行
3 IFFS執行結果不一定有序,這掃描非以索引鍵值邏輯結構為準,而是以存儲塊的物理結構為準。這是邏輯與物理的概念。假如:物理上的兩個相鄰的索引葉子塊A,B,在索引邏輯結構裏對應A1,B1葉子塊,那麽此時,A1,B1在邏輯索引結構裏就未必是相鄰的。

那麽IFFS中索引鍵,包含了SQL查詢訪問的所有字段,如果在IFFS基礎上加了order by,則可能會變成IFS或FTS

IUS和IRS:

IUS 是索引唯一掃描,唯一就代表掃描到指定的索引鍵值就立馬停止掃描。所以IUS是等值掃描

IRS 範圍掃描在你掃描到第一條鍵值數據的時候,還會繼續掃描,直到掃描到不符合查詢條件的鍵值為止才停止掃描。而IRS是不等值查詢,所以通常情況下,同一個SQL IUS要比IRS成本要低。

溫故而知新之:IUS、IFS、IFFS