PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Co to jest skanowanie sterty bitmapowej w planie kwerend?

Najlepsze wyjaśnienie pochodzi od Toma Lane'a, który jest autorem algorytmu, chyba że się mylę. Zobacz także artykuł w Wikipedii.

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

Różni się to od skanowania indeksu, w którym indeks jest odwiedzany wiersz po wierszu w kolejności – co oznacza, że ​​strona dysku może być odwiedzana wiele razy.

Re:pytanie w twoim komentarzu... Tak, dokładnie to.

Skanowanie indeksu przechodzi przez wiersze jeden po drugim, otwierając strony dysku raz za razem, tyle razy, ile to konieczne (niektóre oczywiście pozostaną w pamięci, ale rozumiesz).

Skanowanie indeksu bitmapy sekwencyjnie otworzy krótką listę stron dysku i pobierze każdy odpowiedni wiersz w każdej z nich (stąd tak zwany warunek ponownego sprawdzenia, który widzisz w planach zapytań).

Zwróć uwagę na to, jak grupowanie/kolejność wierszy wpływa na powiązane koszty w obu metodach. Jeśli wiersze są rozmieszczone w dowolnym miejscu w losowej kolejności, indeks bitmapowy będzie tańszy. (I tak naprawdę, jeśli naprawdę są wszystkie .) w innym miejscu, skanowanie sekwencyjne będzie najtańsze, ponieważ skanowanie indeksu bitmapy nie jest pozbawione pewnych narzutów.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. [Wideo] Ansible i PostgreSQL

  2. Jak działa Abs() w PostgreSQL

  3. Jak nawiązać połączenie z Postgresem przez Node.js

  4. Django JSONField wewnątrz ArrayField

  5. Połącz wiele wierszy wyników z jednej kolumny w jedną, pogrupuj według innej kolumny