sql >> Database >  >> RDS >> Oracle

B-Tree vs Bitmap-database-indexen

Van wikipedia:B-Trees en bitmapindexen . De gebruiksscenario's:

  • B-Trees zijn het typische indextype dat wordt gebruikt wanneer u CREATE INDEX ... in een database:

    1. Ze zijn erg snel wanneer u slechts een kleine subset van de indexgegevens selecteert (meestal 5% -10%)
  • Ze werken beter als je veel verschillende geïndexeerde waarden hebt.
  • Het is mogelijk om meerdere B-Tree-indexen te combineren, maar eenvoudigere benaderingen zijn vaak efficiënter.
  • Ze zijn niet handig wanneer er weinig verschillende waarden zijn voor de geïndexeerde gegevens, of wanneer u een grote (meestal>10%) subset van de gegevens wilt krijgen.
  • Elke B-Tree-index legt een kleine boete op bij het invoegen/bijwerken van waarden in de geïndexeerde tabel. Dit kan een probleem zijn als je veel indexen hebt in een erg drukke tabel.

  • Deze kenmerken maken B-Tree-indexen erg handig voor het versnellen van zoekopdrachten in OLTP-applicaties, wanneer u met zeer kleine datasets tegelijk werkt, de meeste zoekopdrachten filteren op ID en u goede gelijktijdige prestaties wilt.

  • Bitmapindexen zijn een meer gespecialiseerde indexvariant:

    1. Ze coderen geïndexeerde waarden als bitmaps en zijn dus zeer ruimtebesparend.
    2. Ze werken meestal beter als er weinig duidelijke geïndexeerde waarden zijn
    3. DB-optimizers kunnen heel gemakkelijk verschillende geïndexeerde bitmaps combineren, dit zorgt voor een efficiënte uitvoering van complexe filters in query's.
    4. Ze zijn erg inefficiënt bij het invoegen/bijwerken van waarden.


    Bitmap-indexen worden meestal gebruikt in datawarehouse-applicaties, waar de database alleen-lezen is, behalve voor de ETL-processen, en u meestal complexe query's moet uitvoeren tegen een sterrenschema , waar bitmapindexen het filteren kunnen versnellen op basis van voorwaarden in uw dimensietabellen, die meestal niet te veel verschillende waarden hebben.

Als een zeer korte samenvatting:gebruik B-Tree-indexen (de "standaard" index in de meeste databases) tenzij u een datawarehouse-ontwikkelaar bent en weet u profiteert van een bitmapindex.



  1. Parameters gebruiken met een Oracle ODBC-verbinding

  2. Maandelijks actieve gebruikers (MAU) berekenen in MySQL

  3. Een kolom beperken om slechts 2 waarden te accepteren

  4. Heeft u al een andere mysqld-server op poort:3306 Ubuntu