2011-07-06 58 views

回答

85

最好的解釋來from Tom Lane,這是該算法的作者,除非我弄錯。另請參閱wikipedia article

總之,這是一個有點像序列掃描。區別在於,與其訪問每個磁盤頁面不同,位圖索引掃描AND和ORs適用索引,並且只訪問它需要的磁盤頁面。

這是一個索引掃描,其中指數是由行順序訪問行的不同 - 這意味着一個磁盤頁面可能會多次訪問。


回覆:您的評論中的問題...是的,就是這樣。

索引掃描將通過行一個接一個,一次又一次地打開磁盤頁面,需要多次(當然留在記憶的一些意願,但你明白了吧)。

位圖索引掃描將按順序打開磁盤頁面的短列表,並抓取每個磁盤頁面中的每個適用行(因此您在查詢計劃中看到所謂的複檢cond)。

請注意,另一方面,聚類/行順序如何影響任一方法的相關成本。如果行以隨機順序遍佈整個地方,則位圖索引將更便宜。 (事實上​​,如果它們確實是全部以上的地方,seq掃描將是最便宜的,因爲位圖索引掃描不是沒有一些開銷。)

+0

因此,「位圖堆掃描」:一頁不能一次訪問!但是「索引可以」:一個頁面可以被訪問多次,因爲索引是按順序逐行訪問的。 – francs