索引查詢並非很快

2021-08-23 15:03:29 字數 629 閱讀 5336

全表掃瞄相信大家都知道,一般情況下都要盡量不要使用。索引掃瞄是先在索引b樹中查詢滿足條件的行,找到後根據索引中行rowid資訊,直接定位表中相應的行。即使表中的資料有千萬級,效率是很高的。這種情況只是針對返回的行比較少的情況,如果很多的話,效率很可能就低了。

原因:

上圖中,第1個葉塊中的第2個索引條目和第2個葉塊中的第8個索引條目,指向表中同一塊:第5號塊。索引是按順序訪問的,當訪問到第1個索引條目時,oracle將表中5號塊讀進buffer cache,讀後面的索引條目時,因為後面的索引條目並不一定也指向表中5號塊,在此例中,後面的索引條目都指向其他的塊,oracle必須將其他的塊讀進buffer cache,而這後讀進buffer cache中的塊,可能會使表的第5號塊老化(也就是被移出快取),當讀到第8個索引條目時,又必須重新物理讀取一次表的第5號塊。而全表掃瞄則不同,它每讀取乙個塊,必將此塊中所有滿足條件的行全部取出,才會物理讀取下乙個塊。因此,如果是取表中大量行,通過索引掃瞄反而會使物理讀增加,因而造成效能降低。

所以從表中取出大量行時,通常行數佔表中總行數的10%以上時,再通過索引取行效率就不很好了。

hashmap遍歷問題,查詢順序並非插入時的順序

今天遍歷hashmap讀取資料時,發現我的map物件已經把配置表的所有資料都讀取出來了,但是去遍歷的時候,發現只遍歷了一部分資料。map of cfg data iterator iter begin map of cfg data begin map of cfg data iterator it...

查詢 線性索引查詢

索引就是把乙個關鍵字與它對應的記錄相關聯的過程,乙個索引由若干個索引項構成,每個索引項至少應包含關鍵字和其對應的記錄在儲存器中的位置等資訊。索引技術是組織大型資料庫以及磁碟檔案的一種重要技術。索引按照結構可以分為線性索引 樹形索引和多級索引。這裡只 線性索引,即將索引項集合組織為線性結構,也稱為索引...

索引 查詢型別和索引

當您考慮是否要對列建立索引時,請估計在查詢中使用列的方式,下表介紹了索引對其有用的查詢型別.表中的示例基於 adventureworks2008r2 示例資料庫,在 sql server management studio 中執行這些示例時.您可以通過顯示實際的執行計畫來檢視查詢優化器選擇的索引.有...