Wie arbeiten Datenbankindizes Wie Datenbank-Indizes Programmierer und Software arbeiten Interview

Beginnen wir unser Tutorial und Erklärung, warum Sie, indem Sie durch ein sehr einfaches Beispiel einen Datenbankindex benötigen würde. Nehmen wir an, dass wir eine Datenbanktabelle namens Mitarbeiter mit drei Spalten - EMPLOYEE_NAME, Employee_Age und Employee_Address. Angenommen, die Employee-Tabelle Tausende von Zeilen.

Was ohne Index auf dem Tisch passieren würde?

Sobald wir diese Abfrage ausführen, was genau hinter den Kulissen geht an Mitarbeiter zu finden, die Jesus genannt werden? Nun, die Datenbank-Software würde buchstäblich an jeder einzelnen Zeile in der Tabelle Personal, um zu sehen, ob die EMPLOYEE_NAME für diese Zeile ist ‚Jesus'. Und weil wir jede Zeile mit dem Namen ‚Jesus' im Innern wollen, können wir einfach nicht aufhören einmal suchen wir nur eine Zeile mit dem Namen‚Jesus' zu finden, denn es gibt andere Zeilen mit dem Namen Jesus sein könnte. So muss jede Zeile bis zur letzten Zeile durchsucht werden - was Tausende von Zeilen in diesem Szenario bedeutet, wird von der Datenbank überprüft wird die Zeilen mit dem Namen ‚Jesus' zu finden. Dies ist, was ein Full Table Scan genannt wird.

Wie ein Datenbankindex kann die Leistung helfen

Was ist ein Index?

Also, was ist ein Index? Nun, ein Index ist eine Datenstruktur (am häufigsten ein B- Baum), die die Werte für eine bestimmte Spalte in einer Tabelle speichert. Ein Index wird auf eine Spalte einer Tabelle erstellt. So sind die wichtigsten Punkte zu erinnern, dass ein Index den Spaltenwertes aus einer Tabelle besteht, und dass diese Werte in einer Datenstruktur gespeichert. Der Index ist eine Datenstruktur - das erinnern.

Welche Art von Datenstruktur ist ein Index?

B- Bäume sind die am häufigsten verwendeten Datenstrukturen für die Indizes. Der Grund, warum B- Bäume sind die beliebtesten Datenstruktur für Indizes auf die Tatsache zurückzuführen ist, dass sie zeiteffizient sind - weil Look-ups, Deletionen und Insertionen können alle in logarithmischer Zeit erfolgen. Und ein weiterer wichtiger Grund B- Bäume werden häufiger verwendet, da die Daten, die in dem B- Baum gespeichert ist, können sortiert werden. Die RDBMS bestimmt typischerweise, welche Datenstruktur tatsächlich für einen Index verwendet wird. Aber in einigen Szenarien mit bestimmten RDBMS, können Sie tatsächlich festlegen, welche Datenstruktur, die Sie möchten, dass Ihre Datenbank verwenden, wenn Sie den Index selbst erstellen.

Wie wird ein Hash-Tabellenindex arbeiten?

Die Nachteile eines Hash-Index

Hash-Tabellen werden notsorted Datenstrukturen, und es gibt viele Arten von Abfragen, die Hash-Indizes kann mit nicht einmal helfen. Zum Beispiel: Angenommen, Sie alle Mitarbeiter, um herauszufinden wollen, die weniger als 40 Jahre alt. Wie könnte man das mit einem Hash-Tabellenindex tun? Nun, es ist nicht möglich, da eine Hash-Tabelle zum Nachschlagen Schlüsselwertepaare nur gut ist - was bedeutet, dass Abfragen, die auf Gleichheit prüfen (wie „WHERE name =‚Jesus'“). Was ist in dem Schlüsselwert-Mapping in einer Hash-Tabelle angedeutet wird, ist das Konzept, dass der Schlüssel einer Hash-Tabelle nicht sortiert oder in einer bestimmten Reihenfolge gespeichert. Aus diesem Grund Hash-Indizes sind in der Regel nicht der Standardtyp der Datenstruktur von Datenbankindizes verwendet - weil sie nicht so flexibel wie B- Bäume sind, wenn sie als Indexdatenstruktur verwendet. Siehe auch: Binäre Bäume gegen Hash Tables.

Was sind einige andere Arten von Indizes?

Indizes, die eine R- Baumdatenstruktur verwenden, sind häufig zu helfen, mit der räumlichen Probleme. Zum Beispiel kann eine Abfrage wie „alle Starbucks finden im Umkreis von 2 Kilometer von mir“ würde die Art der Abfrage, die eine verbesserte Leistung, wenn die Datenbanktabelle verwendet einen R- Baum-Index zeigen konnte.

Eine andere Art von Index ist ein Bitmap-Index, der auf Spalten gut funktionieren, die Boolesche Werte enthalten (wie wahr und falsch), aber viele Instanzen dieser Werte - im Grunde Spalten mit geringer Selektivität.

Wie verbessert ein Index-Performance?

Da ein Index im Grunde eine Datenstruktur, die verwendet wird, Spaltenwert zu speichern, diese Werte aufzublicken wird viel schneller. Und wenn ein Index mit der am häufigsten Datenstrukturtyp verwendet - ein B- Baum - dann wird die Datenstruktur auch sortiert. Mit werden die Spaltenwerte sortiert kann eine große Leistungssteigerung sein - lesen Sie weiter, um herauszufinden, warum.

Lassen Sie uns sagen, dass wir einen B- Baum-Index auf der EMPLOYEE_NAME Spalte erstellen Dies bedeutet, dass, wenn wir für die Mitarbeiter dem Namen „Jesus“ zu suchen mit dem SQL wir früher gezeigt, dann wird die gesamte Tabelle Mitarbeiter nicht durchsucht werden muss, Mitarbeiter zu finden Namen „Jesus “. Stattdessen wird die Datenbank, den Index verwenden, um Mitarbeiter namens Jesus, weil der Index vermutlich alphabetisch sortiert wird durch den Namen des Mitarbeiters. Und weil es sortiert wird, bedeutet dies für einen Namen suchen ist viel schneller, da alle Namen mit einem „J“ beginnen werden im Index zueinander gleich neben sein! Es ist auch wichtig zu beachten, dass der Index auch Zeiger auf die Tabellenzeile gespeichert werden, so dass andere Spaltenwerte abgerufen werden können - lesen Sie weiter, um mehr Informationen über das.

Was genau ist in einem Datenbankindex?

So, jetzt wissen Sie, dass eine Datenbank Index auf einer Spalte in einer Tabelle erstellt wird, und dass der Index speichert die Werte in dieser bestimmten Spalte. Aber es ist wichtig zu verstehen, dass ein Datenbankindex nicht speichert die Werte in den anderen Spalten der gleichen Tabelle. Zum Beispiel, wenn wir einen Index für die EMPLOYEE_NAME Spalte zu erstellen, bedeutet dies, dass die Employee_Age und Employee_Address Spaltenwerte werden nicht auch im Index gespeichert. Wenn wir nur alle haben speichern Sie die anderen Spalten in dem Index, dann wäre es nur wie eine weitere Kopie der gesamten Tabelle erstellen - was viel zu viel Platz in Anspruch nehmen würde und sehr ineffizient sein.

Ein Index speichert auch einen Zeiger auf die Tabellenzeile

So ist die Frage, ob der Wert, den wir suchen in einem Index (wie ‚Jesus') gefunden wird. wie funktioniert es die anderen Werte finden, die in der gleichen Reihe (wie die Adresse von Jesus und seinem Alter) sind? Nun, es ist ganz einfach - Datenbank-Indizes auch speichert Zeiger auf die entsprechenden Zeilen in der Tabelle. Ein Zeiger ist nur eine Referenz auf einen Ort im Speicher, wo die Zeilendaten werden auf der Festplatte gespeichert. So, zusätzlich zu dem Spaltenwert, der in dem Index gespeichert ist, ein Zeiger auf die Zeile in der Tabelle, wo dieser Wert lebt auch im Index gespeichert. Dies bedeutet, dass einer der Werte (oder Knoten) in dem Index für eine EMPLOYEE_NAME wie etwas sein könnte ( „Jesus“, 0x82829), wobei 0x82829 die Adresse auf der Platte ist (der Zeiger), wo die Zeilendaten für „Jesus“ gespeichert sind, . Ohne diese Zeiger alles, was Sie haben würden, ist ein einzelner Wert, der sinnlos wäre, weil Sie nicht die Lage wären, die anderen Werte in der gleichen Zeile abzurufen - wie die Adresse und das Alter eines Mitarbeiters.

Wie weiß eine Datenbank, wenn Sie einen Index benutzen?

Können Sie die Datenbank erzwingen einen Index für eine Abfrage zu benutzen?

Wie ein Index in SQL erstellen:

Hier ist, was die tatsächliche SQL einen Index für die EMPLOYEE_NAME Spalte aus unserem Beispiel würde so aussehen früher zu erstellen:

Wie ein Multi-Spalten-Index in SQL erstellen:

Wir könnten auch einen Index für zwei der Spalten in der Employee-Tabelle erstellen. wie in dieser SQL gezeigt:

Was ist eine gute Analogie für einen Datenbankindex?

Eine sehr gute Analogie ist ein Datenbankindex als Index in einem Buch zu denken. Wenn Sie ein Buch über Hunde haben und Sie sind für den Abschnitt über Golden Retrievers suchen, warum dann würden Sie das gesamte Buch durchblättert - das entspricht einer vollständigen Tabellensuche in Datenbank-Terminologie ist - wenn man nur auf den Index gehen können die Rückseite des Buches, mit dem Sie die genauen Seiten erfahren, wo Sie Informationen über Golden Retrievers finden. In ähnlicher Weise wie ein Buchindex eine Seitennummer enthält, enthält ein Datenbankindex einen Zeiger auf die Zeile, die den Wert enthält, die Sie in Ihrer SQL suchen.

Was kostet eine Datenbank Index von?

Also, was sind einige der Nachteile einer Datenbank Index? Nun, für eine Sache, die es braucht viel Platz - und die größeren Tisch, desto größer Ihr Index. Eine weitere Performance-Einbußen mit Indizes ist die Tatsache, dass, wenn Sie hinzufügen, löschen oder Aktualisieren von Zeilen in der entsprechenden Tabelle, die gleichen Operationen an Ihren Index getan werden muss. Denken Sie daran, dass ein Index das gleiche bis auf die Minute Daten enthalten muss, wie, was ist in der Tabellenspalte (n), dass der Index abdeckt.

Als allgemeine Regel gilt, dass ein Index nur auf einer Tabelle erstellt werden, wenn die Daten in der indizierten Spalte häufig abgefragt werden.

Der Tat ein sehr klar und auf den Punkt Erklärung.

Ich habe eine Frage im Abschnitt „Wie funktioniert eine Datenbank, wann ein Index verwendet?“.
Angenommen, ich bin mit einer Abfrage wie

Select * from employee where employee_age> 30 und employee_name = „Jesus“

Wird es noch den Index für employee_name gemacht verwenden, da es employee_age> 30 Zustand in der mit where-Klausel oder der Index nur dann verwendet werden, wenn es nur employee_name Zustand in der Klausel, wo ist?

Danke - Grüße,
Shriyansh Dhariwal

Mann, das war wirklich gute Erklärung. Vielen Dank! # 128512;

Ich liebe die Art und Weise Konzepte werden hier erklärt :-)

Danke vielmals. Bitte erläutern Sie über Nicht-Clustered-Index als auch.
Danke noch einmal.

Wenn der Index HashTable ist und es gibt viele Mitarbeiter mit dem Namen „Jesus“ wie kann dann mehrere Zeilenadressen für einen einzelnen Schlüssel „Jesus“ Hash-Tabelle halten.

Ich möchte wissen, ob
Ich hätte einen Schlüssel Jesus
und haben einen Zeiger auf Tisch, an dem die beiden anderen Jesus sein wird.

Mögen:
Mitarbeitername
Jesus Anthony
Jesus Pert
Jesus Louis

B Baum:
Jesus
-> Zeiger auf eine Tabelle, die ich alle Jesus finden:
Jesus - ROWID
JESUS ​​- ROWID
JESUS ​​-ROW ID

Jesus, Jesus, Jesus, Chris, Chris: Wenn Sie einen Index mit EMPLOYEE_NAME mit den Werten erstellen.
Wie viele Schlüssel hätte er?
2 Schlüssel? Wenn es zwei Tasten, unter denen der 2 Jesus und 1 Chris seien?

sehr, sehr schön Post ... .quite einfach, leicht und Verständnis. Vielen Dank

In Verbindung stehende Artikel