Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen B-Baum-Indexierung | Abfrageoptimierung.Indizes
SQL-Optimierung und Abfragefunktionen

B-Baum-Indexierung

Swipe um das Menü anzuzeigen

Ein B-Baum-Index ist eine balancierte Baumdatenstruktur, die in Datenbanken häufig verwendet wird, um große Datenmengen effizient zu organisieren und zu durchsuchen.
B-Bäume ähneln sehr binären Suchbäumen (BST), jedoch können die Knoten in einem B-Baum mehr als zwei Kinder haben.

Der B-Baum speichert Schlüssel in sortierter Reihenfolge innerhalb der Knoten, was eine schnelle Datenabfrage durch hierarchisches Durchlaufen vom Wurzel- bis zum Blattknoten ermöglicht. Die B-Baum-Indizierung eignet sich besonders für Bereichsabfragen und Gleichheitssuchen und ist daher eine beliebte Wahl zur Optimierung der Datenbankleistung.

Note
Mehr erfahren

Eine Bereichsabfrage ist eine Datenbankoperation, die Daten innerhalb eines bestimmten Wertebereichs für ein bestimmtes Attribut oder eine Spalte abruft. Sie ermöglicht das Abrufen von Datensätzen, die innerhalb eines definierten Bereichs liegen, wie z. B. Werte zwischen zwei Daten oder innerhalb eines numerischen Intervalls. Für Bereichssuchen werden folgende Operatoren verwendet: >, <, >=, <=.

Eine Gleichheitssuche ist eine Datenbankoperation, die Daten basierend auf einer exakten Übereinstimmung eines bestimmten Werts für ein bestimmtes Attribut oder eine Spalte abruft. Sie ermöglicht das Auffinden von Datensätzen, die genau einem bestimmten Kriterium entsprechen, wie z. B. alle Kunden mit einer bestimmten E-Mail-Adresse oder einer bestimmten Benutzer-ID. Diese Abfragen umfassen die Operatoren = und <>.

Wie funktioniert das?

Der B-Baum-Index organisiert Daten in hierarchischer Struktur, wobei jeder Knoten eine feste Anzahl von Schlüsseln und Zeigern auf Kindknoten enthält.
B-Bäume bleiben balanciert, indem sie sicherstellen, dass alle Blattknoten auf derselben Ebene liegen, was Suchoperationen optimiert.
Bei der Suche nach einem bestimmten Schlüssel durchläuft der B-Baum-Algorithmus den Baum vom Wurzelknoten bis zu den Blattknoten und nutzt die binäre Suche, um den gewünschten Schlüssel effizient zu finden.

Indexsuche umfasst das Durchlaufen des Baums bis zu den Blattknoten, das Folgen der Blattknoten-Kette zum Auffinden passender Datensätze und das Abrufen der tatsächlichen Daten von der Festplatte.

In der Abbildung ist die Suche nach dem Schlüssel 302 dargestellt:

  1. Eine Suchbaumstruktur ist eine Baumart, bei der jeder Knoten zwei Zeiger besitzt: Der linke Zeiger verweist auf Kindknoten mit kleineren Werten als der Elternknoten, der rechte Zeiger auf Kindknoten mit größeren Werten als der Elternknoten;

  2. In einem B-Baum kann der Wurzelknoten mehrere Indexwerte enthalten. Enthält die Wurzel beispielsweise drei verschiedene Werte, besitzt sie drei Zeiger, die jeweils auf den Wertebereich zwischen diesen Schlüsseln verweisen;

  3. Um nach einem Schlüssel wie 302 zu suchen, beginnt die Suche beim Wurzelknoten und folgt den entsprechenden Zeigern bis zu den Blattknoten. Die Suche ist nach dem Durchlaufen von drei Baumblöcken abgeschlossen, wie im Diagramm rot hervorgehoben;

  4. Um nach einem Wertebereich ab 302 zu suchen, können die horizontalen Zeiger zwischen den Blattknoten verwendet werden. Beispielsweise erfolgt das Abrufen der Werte von 302 bis 502 durch sequentielles Folgen der Blattknoten.

Note
Hinweis

Der für die Suche in einem B-Baum-Index verwendete Schlüssel stammt aus den Werten, die in den indizierten Spalten der Datenbanktabelle gespeichert sind. Befindet sich der Index beispielsweise auf einer Spalte wie "client_id", ist der Suchschlüssel der tatsächliche "client_id"-Wert. Jeder eindeutige numerische Wert in der indizierten Spalte dient als Schlüssel im B-Baum-Index und erleichtert das Auffinden und Abrufen der entsprechenden Zeilen in der Datenbanktabelle.

Vorteile und Nachteile

Im Gegensatz zur Standarddatenstruktur des binären Suchbaums können B-Baum-Knoten mehr als 2 Kinder aufnehmen. Die standardmäßige maximale Anzahl von Kindern pro Knoten ist typischerweise auf 16 gesetzt.

Index-Implementierung

Um einen B-Baum-Index auf einer Spalte in PostgreSQL zu erstellen, kann folgender SQL-Befehl verwendet werden:

CREATE INDEX index_name ON table_name USING BTREE (column_name1, column_name2,...);

Da der B-Baum-Index ein Standardindex in SQL ist, kann auch die folgende Anweisung verwendet werden:

CREATE INDEX index_name ON table_name(column_name1, column_name2,..);
Note
Hinweis

In SQL wird beim Erstellen einer Tabelle mit einer Primary Key Constraint in den meisten Datenbankmanagementsystemen automatisch ein Index auf die im Primary Key angegebenen Spalten erstellt. Dieser Index unterstützt die Durchsetzung der Eindeutigkeitsbedingung des Primary Keys und verbessert zudem die Performance von Abfragen, die auf der Suche oder dem Join anhand der Primary Key-Spalte(n) basieren.

question mark

Welche Operation würde in PostgreSQL NICHT dazu führen, dass ein B-Baum-Index reorganisiert oder neu ausbalanciert wird?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

B-Baum-Indexierung

Ein B-Baum-Index ist eine balancierte Baumdatenstruktur, die in Datenbanken häufig verwendet wird, um große Datenmengen effizient zu organisieren und zu durchsuchen.
B-Bäume ähneln sehr binären Suchbäumen (BST), jedoch können die Knoten in einem B-Baum mehr als zwei Kinder haben.

Der B-Baum speichert Schlüssel in sortierter Reihenfolge innerhalb der Knoten, was eine schnelle Datenabfrage durch hierarchisches Durchlaufen vom Wurzel- bis zum Blattknoten ermöglicht. Die B-Baum-Indizierung eignet sich besonders für Bereichsabfragen und Gleichheitssuchen und ist daher eine beliebte Wahl zur Optimierung der Datenbankleistung.

Note
Mehr erfahren

Eine Bereichsabfrage ist eine Datenbankoperation, die Daten innerhalb eines bestimmten Wertebereichs für ein bestimmtes Attribut oder eine Spalte abruft. Sie ermöglicht das Abrufen von Datensätzen, die innerhalb eines definierten Bereichs liegen, wie z. B. Werte zwischen zwei Daten oder innerhalb eines numerischen Intervalls. Für Bereichssuchen werden folgende Operatoren verwendet: >, <, >=, <=.

Eine Gleichheitssuche ist eine Datenbankoperation, die Daten basierend auf einer exakten Übereinstimmung eines bestimmten Werts für ein bestimmtes Attribut oder eine Spalte abruft. Sie ermöglicht das Auffinden von Datensätzen, die genau einem bestimmten Kriterium entsprechen, wie z. B. alle Kunden mit einer bestimmten E-Mail-Adresse oder einer bestimmten Benutzer-ID. Diese Abfragen umfassen die Operatoren = und <>.

Wie funktioniert das?

Der B-Baum-Index organisiert Daten in hierarchischer Struktur, wobei jeder Knoten eine feste Anzahl von Schlüsseln und Zeigern auf Kindknoten enthält.
B-Bäume bleiben balanciert, indem sie sicherstellen, dass alle Blattknoten auf derselben Ebene liegen, was Suchoperationen optimiert.
Bei der Suche nach einem bestimmten Schlüssel durchläuft der B-Baum-Algorithmus den Baum vom Wurzelknoten bis zu den Blattknoten und nutzt die binäre Suche, um den gewünschten Schlüssel effizient zu finden.

Indexsuche umfasst das Durchlaufen des Baums bis zu den Blattknoten, das Folgen der Blattknoten-Kette zum Auffinden passender Datensätze und das Abrufen der tatsächlichen Daten von der Festplatte.

In der Abbildung ist die Suche nach dem Schlüssel 302 dargestellt:

  1. Eine Suchbaumstruktur ist eine Baumart, bei der jeder Knoten zwei Zeiger besitzt: Der linke Zeiger verweist auf Kindknoten mit kleineren Werten als der Elternknoten, der rechte Zeiger auf Kindknoten mit größeren Werten als der Elternknoten;

  2. In einem B-Baum kann der Wurzelknoten mehrere Indexwerte enthalten. Enthält die Wurzel beispielsweise drei verschiedene Werte, besitzt sie drei Zeiger, die jeweils auf den Wertebereich zwischen diesen Schlüsseln verweisen;

  3. Um nach einem Schlüssel wie 302 zu suchen, beginnt die Suche beim Wurzelknoten und folgt den entsprechenden Zeigern bis zu den Blattknoten. Die Suche ist nach dem Durchlaufen von drei Baumblöcken abgeschlossen, wie im Diagramm rot hervorgehoben;

  4. Um nach einem Wertebereich ab 302 zu suchen, können die horizontalen Zeiger zwischen den Blattknoten verwendet werden. Beispielsweise erfolgt das Abrufen der Werte von 302 bis 502 durch sequentielles Folgen der Blattknoten.

Note
Hinweis

Der für die Suche in einem B-Baum-Index verwendete Schlüssel stammt aus den Werten, die in den indizierten Spalten der Datenbanktabelle gespeichert sind. Befindet sich der Index beispielsweise auf einer Spalte wie "client_id", ist der Suchschlüssel der tatsächliche "client_id"-Wert. Jeder eindeutige numerische Wert in der indizierten Spalte dient als Schlüssel im B-Baum-Index und erleichtert das Auffinden und Abrufen der entsprechenden Zeilen in der Datenbanktabelle.

Vorteile und Nachteile

Im Gegensatz zur Standarddatenstruktur des binären Suchbaums können B-Baum-Knoten mehr als 2 Kinder aufnehmen. Die standardmäßige maximale Anzahl von Kindern pro Knoten ist typischerweise auf 16 gesetzt.

Index-Implementierung

Um einen B-Baum-Index auf einer Spalte in PostgreSQL zu erstellen, kann folgender SQL-Befehl verwendet werden:

CREATE INDEX index_name ON table_name USING BTREE (column_name1, column_name2,...);

Da der B-Baum-Index ein Standardindex in SQL ist, kann auch die folgende Anweisung verwendet werden:

CREATE INDEX index_name ON table_name(column_name1, column_name2,..);
Note
Hinweis

In SQL wird beim Erstellen einer Tabelle mit einer Primary Key Constraint in den meisten Datenbankmanagementsystemen automatisch ein Index auf die im Primary Key angegebenen Spalten erstellt. Dieser Index unterstützt die Durchsetzung der Eindeutigkeitsbedingung des Primary Keys und verbessert zudem die Performance von Abfragen, die auf der Suche oder dem Join anhand der Primary Key-Spalte(n) basieren.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 2
some-alt