sql >> Database teknologi >  >> RDS >> PostgreSQL

Forstå bitmapindekser i postgresql

Bitmap af sider oprettes dynamisk for hver forespørgsel. Det cachelagres eller genbruges ikke og kasseres ved slutningen af ​​bitmapindeksscanningen.

Det giver ikke mening at oprette sidens bitmap på forhånd, fordi dens indhold afhænger af forespørgselsprædikaterne .

Lad os sige, at du søger efter x=1 and y=2 . Du har b-tree indekser på x og y . PostgreSQL kombinerer ikke x og y ind i en bitmap og søg derefter i bitmap. Den scanner indeks x for sideadressen på alle sider med x=1 og laver en bitmap, hvor de sider, der kan indeholde x=1 er sande. Derefter scanner den y leder efter sideadresserne hvor y kan være lig med 2 , laver en bitmap ud fra det. Derefter OG lader dem finde sider, hvor både x=1 og y=2 kan være sandt. Til sidst scanner den selv tabellen, læser kun de sider, der kan indeholde kandidatværdier, læser hver side og beholder kun rækkerne, hvor x=1 and y=2 .

Hvis du nu leder efter noget som et cachelagret, forudbygget bitmapindeks, er der sådan noget i PostgreSQL 9.5:BRIN-indekser . Disse er beregnet til meget store tabeller og giver mulighed for at finde intervaller af tabellen, som kan springes over, fordi de vides ikke at indeholde en ønsket værdi.



  1. OPENJSON "Forkert syntaks nær søgeordet 'med'." i SQL Server (LØST)

  2. mysql tabelstruktur med flere variabler

  3. egenskaben "diesel::Expression" er ikke implementeret for "bigdecimal::BigDecimal"

  4. Sådan åbnes en database i eksklusiv tilstand i Access 2016