【TUNE_ORACLE】Oracle索引設計思想(一)索引片和匹配列概述

Attack_on_Jager發表於2021-02-22

索引片和匹配列

先放圖:

注:如上圖所示,給student表的id列建立一個索引,並且查詢id在11-20區間的所有值(實際表中只有三個匹配的值)。


關於索引片的概念,使用廣泛的描述是定義索引 匹配列的數量,如上圖就只有id這一個匹配列,值的範圍在11-20之間,因此索引片的大小也就確定了。


索引片(黃色區域)掃描方式是緊挨著順序掃描的,但是索引指標對應的表資料的順序很大機率卻是亂序的,而訪問路徑的成本很大程度上是根據索引片的“厚度”(厚度就是謂詞表示式確定的值的範圍)決定的,所以索引片越厚,掃描的索引頁就越多,需要處理的索引記錄也就越多,開銷也就越大,而其中最大的開銷來自於回表的同步讀操作,如上圖的索引行的值在11-20區間,相應的錶行會透過同步讀的方式從表中讀取。

假設where子句有第二個有索引的列,如果這兩列的關聯性越差(對於“關聯性”,就是隻用知道A列的值就能確定出B列的值,舉個極端的例子就是A列的值全部一樣,B列的值也全部一樣,於是如果知道任意A列的值,B列的值就不用查就知道了,就表示A列和B列強關聯,所以關聯性越強,資料的重複率越高),過濾性就越強,那麼這兩個列能夠一起定義的索引片也就越“薄”,對錶的同步讀次數也就越少,開銷就越小。


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

相關文章