sql >> Databasteknik >  >> RDS >> PostgreSQL

Förstå bitmappsindex i postgresql

Bitmappen av sidor skapas dynamiskt för varje fråga. Det cachelagras inte eller återanvänds och kasseras i slutet av bitmappsindexsökningen.

Det är inte meningsfullt att skapa sidans bitmapp i förväg eftersom innehållet beror på frågepredikaten .

Säg att du söker efter x=1 and y=2 . Du har b-tree index på x och y . PostgreSQL kombinerar inte x och y i en bitmapp och sök sedan i bitmappen. Den skannar index x för sidadressen för alla sidor med x=1 och gör en bitmapp där sidorna som kan innehålla x=1 är sanna. Sedan skannar den y letar efter sidadresserna där y kan vara lika med 2 , gör en bitmapp från det. Sedan OCH hjälper den dem att hitta sidor där både x=1 och y=2 kan vara sant. Slutligen skannar den själva tabellen, läser endast de sidor som kan innehålla kandidatvärden, läser varje sida och behåller endast raderna där x=1 and y=2 .

Nu, om du letar efter något som ett cachat, förbyggt bitmappsindex, finns det något sådant i PostgreSQL 9.5:BRIN-index . Dessa är avsedda för mycket stora tabeller och ger ett sätt att hitta intervall i tabellen som kan hoppa över eftersom de är kända för att inte innehålla ett önskat värde.



  1. Spring Boot Database-initiering MySQLException för Trigger

  2. Oracle - Hur man beviljar en användare rättigheterna till en annan användares objekt

  3. NodeJS Hur man hanterar samtidig förfrågan till MySQL

  4. NHibernate Postgresql DateTime to Time Conversion