sql >> Databasteknik >  >> RDS >> Oracle

B-Tree vs Bitmap databasindex

Från wikipedia:B-Trees och bitmappsindex . Användningsfallen:

  • B-träd är den typiska indextypen som används när du gör CREATE INDEX ... i en databas:

    1. De är mycket snabba när du bara väljer en liten mycket delmängd av indexdata (vanligtvis 5–10 % max)
  • De fungerar bättre när du har många distinkta indexerade värden.
  • Det går att kombinera flera B-Tree-index, men enklare metoder är ofta mer effektiva.
  • De är inte användbara när det finns få distinkta värden för den indexerade informationen, eller när du vill få en stor (>10 % typiskt) delmängd av datan.
  • Varje B-Tree-index ger ett litet straff när man infogar/uppdaterar värden på den indexerade tabellen. Detta kan vara ett problem om du har många index i en mycket upptagen tabell.

  • De här egenskaperna gör B-Tree-index mycket användbara för att snabba upp sökningar i OLTP-applikationer, när du arbetar med mycket små datamängder åt gången filtrerar de flesta frågor efter ID och du vill ha god samtidig prestanda.

  • Bitmappsindex är en mer specialiserad indexvariant:

    1. De kodar indexerade värden som bitmappar och är därför mycket utrymmeseffektiva.
    2. De tenderar att fungera bättre när det finns få distinkta indexerade värden
    3. DB-optimerare kan kombinera flera bitmappar som indexeras mycket enkelt, vilket möjliggör effektiv exekvering av komplexa filter i frågor.
    4. De är mycket ineffektiva när man infogar/uppdaterar värden.


    Bitmappsindex används mest i datalagerapplikationer, där databasen är skrivskyddad förutom ETL-processerna, och du behöver vanligtvis utföra komplexa frågor mot en stjärnschema , där bitmappsindex kan påskynda filtreringen baserat på förhållanden i dina dimensionstabeller, som vanligtvis inte har för många distinkta värden.

Som en mycket kort sammanfattning:använd B-Tree-index ("standard"-index i de flesta databaser) om du inte är en datalagerutvecklare och vet du kommer att dra nytta av ett bitmappsindex.



  1. Konvertera 'datetime2' till 'date' i SQL Server (T-SQL-exempel)

  2. MySQL Statement Cancellation Timer kunde inte stoppas

  3. Begränsa PostgreSQL-användaråtkomst med hjälp av schema och vyer

  4. Hur implementerar man automatisk vyuppdatering så snart det finns förändringar i databasen i AngularJs?