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

Zrozumienie indeksów bitmapowych w postgresql

Bitmapa stron jest tworzona dynamicznie dla każdego zapytania. Nie jest buforowany ani ponownie używany i jest odrzucany na końcu skanowania indeksu bitmapy.

Wcześniejsze tworzenie bitmapy strony nie ma sensu, ponieważ jej zawartość zależy od predykatów zapytania .

Załóżmy, że szukasz x=1 and y=2 . Masz indeksy b-drzewa na x i y . PostgreSQL nie łączy x i y do mapy bitowej, a następnie przeszukaj mapę bitową. Skanuje indeks x dla adresu strony wszystkich stron z x=1 i tworzy bitmapę, w której strony, które mogą zawierać x=1 są prawdziwe. Następnie skanuje y szukanie adresów stron, gdzie y może równać się 2 , tworząc z tego bitmapę. Następnie ORAZ znajduje strony, na których oba x=1 i y=2 może być prawdą. Na koniec skanuje samą tabelę, odczytując tylko strony, które mogą zawierać wartości kandydujące, czytając każdą stronę i zachowując tylko wiersze, w których x=1 and y=2 .

Teraz, jeśli szukasz czegoś w rodzaju buforowanego, gotowego indeksu bitmapowego, w PostgreSQL 9.5 jest coś takiego:Indeksy BRIN . Są one przeznaczone dla bardzo dużych tabel i zapewniają sposób na znalezienie zakresów tabeli, które można pominąć, ponieważ wiadomo, że nie zawierają pożądanej wartości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj identyfikator z warunkowego INSERT

  2. Konwencje nazewnictwa PostgreSQL

  3. Czy funkcje PostgreSQL są transakcyjne?

  4. org.hibernate.type.TextType i Oracle

  5. Czy można policzyć wszystkie wiersze o tym samym identyfikatorze za pomocą COUNT?