440 Stimmen

Wie funktionieren die MySQL-Indizes?

Ich bin wirklich daran interessiert, wie MySQL-Indizes funktionieren, genauer gesagt, wie können sie die angeforderten Daten zurückgeben, ohne die gesamte Tabelle zu scannen?

Ich weiß, dass das nicht zum Thema gehört, aber wenn es jemanden gibt, der mir das im Detail erklären kann, wäre ich sehr, sehr dankbar.

2voto

shahirnana Punkte 1

Nehmen Sie an ce Videos für weitere Details zur Indizierung

Einfache Indizierung Sie können einen eindeutigen Index für eine Tabelle erstellen. Ein eindeutiger Index bedeutet, dass zwei Zeilen nicht denselben Indexwert haben können. Hier ist die Syntax, um einen Index für eine Tabelle zu erstellen

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...);

Sie können eine oder mehrere Spalten verwenden, um einen Index zu erstellen. Zum Beispiel können wir einen Index erstellen auf tutorials_tbl mit tutorial_author.

CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author)

Sie können einen einfachen Index für eine Tabelle erstellen. Lassen Sie einfach das Schlüsselwort UNIQUE in der Abfrage weg, um einen einfachen Index zu erstellen. Ein einfacher Index erlaubt doppelte Werte in einer Tabelle.

Wenn Sie die Werte in einer Spalte in absteigender Reihenfolge indizieren wollen, können Sie das reservierte Wort DESC nach dem Spaltennamen hinzufügen.

mysql> CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author DESC)

2voto

Anurag Sharma Punkte 2175

Hinzufügen einer visuellen Darstellung zur Liste der Antworten. enter image description here

MySQL verwendet eine zusätzliche Ebene der Indirektion: Sekundäre Indexsätze verweisen auf primäre Indexsätze, und der primäre Index selbst enthält die Speicherorte der Zeilen auf der Festplatte. Wenn sich ein Zeilenversatz ändert, muss nur der Primärindex aktualisiert werden.

Achtung: Die Datenstruktur der Festplatte sieht im Diagramm flach aus, ist aber in Wirklichkeit ein B+ Baum.

Quelle: Link

1voto

WoodrowShigeru Punkte 1219

Ich möchte meine 2 Cents hinzufügen. Ich bin weit davon entfernt, ein Datenbankexperte zu sein, aber ich habe mich in letzter Zeit ein wenig in dieses Thema eingelesen; genug für mich, um zu versuchen, eine ELI5 zu geben. Also, hier ist Mai Laien Erklärung.


Ich verstehe es so, dass ein Index wie ein Mini-Spiegel Ihrer Tabelle ist, ziemlich ähnlich wie ein assoziatives Array. Wenn Sie ihn mit einem passenden Schlüssel füttern, können Sie mit einem einzigen "Befehl" zu dieser Zeile springen.

Wenn Sie diesen Index bzw. dieses Array jedoch nicht haben, muss der Abfrage-Interpreter eine for-Schleife verwenden, um alle Zeilen zu durchlaufen und nach einer Übereinstimmung zu suchen (Full-Table-Scan).

Ein Index hat den Nachteil, dass zusätzlicher Speicherplatz (für den Mini-Spiegel) benötigt wird, und bietet im Gegenzug den Vorteil, dass Inhalte schneller gefunden werden.

Beachten Sie, dass (in Abhängigkeit von Ihrer DB-Engine) das Erstellen von Primär-, Fremd- oder eindeutigen Schlüsseln automatisch auch einen entsprechenden Index einrichtet. Das gleiche Prinzip ist der Grund, warum und wie diese Schlüssel funktionieren.

0voto

saint_sharan Punkte 99

Nehmen wir an, Sie haben ein Buch, wahrscheinlich einen Roman, ein dickes Buch, in dem es viel zu lesen gibt, also viele Wörter. Nun, hypothetisch gesehen, haben Sie zwei Wörterbücher die nur aus Wörtern besteht, die mindestens einmal im Roman vorkommen. Alle Wörter in diesem zwei Wörterbücher werden in der üblichen alphabetischen Reihenfolge gespeichert. Unter Hypothetisches Wörterbuch A werden Wörter gedruckt. nur einmal während in hypothetisches Wörterbuch B Wörter werden gedruckt so viele Male, wie es im Roman vorkommt . Denken Sie daran, dass die Wörter in beiden Wörterbüchern alphabetisch geordnet sind. Nun sind Sie bei der Lektüre eines Romans an einer Stelle hängen geblieben und müssen die Bedeutung dieses Wortes in einem der hypothetischen Wörterbücher finden. Was werden Sie tun? Sicherlich werden Sie in wenigen Schritten zu diesem Wort springen, um seine Bedeutung zu finden. Vielmehr werden Sie nach der Bedeutung jedes einzelnen Wortes im Roman suchen, und zwar von Anfang an, bis Sie das problematische Wort erreichen.

So funktioniert der Index in SQL. Betrachten Sie Dictionary A als PRIMARY INDEX, Dictionary B als KEY/SECONDARY INDEX und Ihren Wunsch, die Bedeutung des Wortes zu ermitteln, als QUERY/SELECT STATEMENT. Der Index hilft Ihnen, die Daten sehr schnell abzurufen. Ohne Index müssen Sie die Daten von Anfang an suchen, was unnötig zeitaufwändig und kostspielig ist.

Weitere Informationen zu Indizes und Typen finden Sie hier, siehe dies .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X