Oracle
 sql >> Datenbank >  >> RDS >> Oracle

B-Tree vs. Bitmap-Datenbankindizes

Aus Wikipedia:B-Trees und Bitmap-Indizes . Die Anwendungsfälle:

  • B-Bäume sind der typische Indextyp, der verwendet wird, wenn Sie CREATE INDEX ... ausführen in einer Datenbank:

    1. Sie sind sehr schnell, wenn Sie nur eine sehr kleine Teilmenge der Indexdaten auswählen (in der Regel 5 % bis maximal 10 %)
  • Sie funktionieren besser, wenn Sie viele unterschiedliche indizierte Werte haben.
  • Es ist möglich, mehrere B-Tree-Indizes zu kombinieren, aber einfachere Ansätze sind oft effizienter.
  • Sie sind nicht sinnvoll, wenn es nur wenige eindeutige Werte für die indizierten Daten gibt oder wenn Sie eine große Teilmenge der Daten (normalerweise>10 %) erhalten möchten.
  • Jeder B-Tree-Index verursacht eine kleine Strafe beim Einfügen/Aktualisieren von Werten in der indizierten Tabelle. Dies kann ein Problem sein, wenn Sie viele Indizes in einer stark ausgelasteten Tabelle haben.

  • Diese Eigenschaften machen B-Tree-Indizes sehr nützlich für die Beschleunigung von Suchen in OLTP-Anwendungen, wenn Sie mit sehr kleinen Datensätzen gleichzeitig arbeiten, die meisten Abfragen nach ID filtern und Sie eine gute gleichzeitige Leistung wünschen.

  • Bitmap-Indizes sind eine speziellere Indexvariante:

    1. Sie kodieren indizierte Werte als Bitmaps und sind daher sehr platzsparend.
    2. Sie funktionieren tendenziell besser, wenn es nur wenige eindeutige indizierte Werte gibt
    3. DB-Optimierer können mehrere indizierte Bitmaps sehr einfach kombinieren, dies ermöglicht eine effiziente Ausführung komplexer Filter in Abfragen.
    4. Sie sind beim Einfügen/Aktualisieren von Werten sehr ineffizient.


    Bitmap-Indizes werden hauptsächlich in Data-Warehouse-Anwendungen verwendet, wo die Datenbank mit Ausnahme der ETL-Prozesse nur gelesen wird und Sie normalerweise komplexe Abfragen gegen einen Sternschema , wo Bitmap-Indizes das Filtern basierend auf Bedingungen in Ihren Dimensionstabellen beschleunigen können, die normalerweise nicht zu viele unterschiedliche Werte haben.

Als sehr kurze Zusammenfassung:Verwenden Sie B-Tree-Indizes (der "Standard"-Index in den meisten Datenbanken), es sei denn, Sie sind ein Data-Warehouse-Entwickler und wissen Sie profitieren von einem Bitmap-Index.