2011-07-06 11 views

Odpowiedz

85

Najlepszym wyjaśnieniem jest from Tom Lane, autor algorytmu, chyba że się mylę. Zobacz także wikipedia article.

Krótko mówiąc, to trochę jak seq scan. Różnica polega na tym, że zamiast odwiedzać każdą stronę dysku, indeks mapy bitowej skanuje razem AND i OR odpowiednie indeksy i odwiedza tylko te strony dysków, których potrzebuje.

Różni się to od skanowania indeksu, w którym indeks jest odwiedzany rząd po rzędzie w kolejności - co oznacza, że ​​strona dysku może zostać odwiedzona wiele razy.


Do: pytanie w komentarzu ... Tak, właśnie to.

Skanowanie indeksu będzie przeglądać wiersze jeden po drugim, otwierając kolejne strony dysku, tyle razy, ile to konieczne (niektóre oczywiście pozostaną w pamięci, ale otrzymasz punkt).

Skanowanie indeksu bitmapowego po kolei otwiera krótką listę stron dyskowych i przechwytuje każdy odpowiedni wiersz w każdym z nich (stąd tak zwane ponowne sprawdzanie, które można zobaczyć w planach zapytań).

Odnotuj, na marginesie, w jaki sposób klastrowanie/kolejność wierszy wpływa na powiązane koszty z dowolną metodą. Jeśli wiersze znajdują się w dowolnym miejscu w losowej kolejności, indeks bitmapowy będzie tańszy. (I faktycznie, jeśli są one w rzeczywistości nadrzędne, skan seq będzie najtańszy, ponieważ skanowanie indeksu bitmapowego nie jest pozbawione pewnego narzutu.)

+0

Tak, "skanowanie sterty bitmap": strona nie można odwiedzić więcej niż jeden raz! ale "Indeks Can": Strona może być odwiedzana więcej niż jeden raz, ponieważ indeks jest odwiedzany rząd po rzędzie w kolejności. – francs