Heim  >  Artikel  >  Datenbank  >  Kann die Indizierung die Abfrage von Daten in einer Tabelle beschleunigen?

Kann die Indizierung die Abfrage von Daten in einer Tabelle beschleunigen?

(*-*)浩
(*-*)浩Original
2019-07-30 14:57:346366Durchsuche

Verstehen Sie zunächst, warum die Indizierung die Geschwindigkeit erhöht. Wenn DB eine SQL-Anweisung ausführt, besteht die Standardmethode darin, die gesamte Tabelle basierend auf den Suchbedingungen zu scannen und den Suchergebnissatz hinzuzufügen, wenn passende Bedingungen gefunden werden.

Kann die Indizierung die Abfrage von Daten in einer Tabelle beschleunigen?

Wenn wir einem bestimmten Feld einen Index hinzufügen, ermittelt die Abfrage zunächst die Anzahl der Zeilen mit einem bestimmten Wert in der Indexliste, wodurch die Anzahl erheblich reduziert wird Anzahl der Durchlaufübereinstimmungen Die Anzahl der Zeilen kann die Abfragegeschwindigkeit erheblich erhöhen. (Empfohlenes Lernen: MySQL-Video-Tutorial)

Um einen Index hinzuzufügen, fragen Sie zuerst in der Indexliste ab, und unsere Indexliste ist die Datenstruktur einer Klasse B Die zeitliche Komplexität der Abfrage beträgt O(log2N). Das Auffinden der spezifischen Wertzeile ist daher sehr schnell.

Warum ist B+-Tree für die Dateiindizierung und Datenbankindizierung von Betriebssystemen in praktischen Anwendungen besser geeignet als B-Tree?

1) Die Festplatten-Lese- und Schreibkosten des B+-Baums sind geringer

Die internen Knoten des B+-Baums haben keine Zeiger auf spezifische Informationen von Schlüsselwörter. Daher sind seine internen Knoten kleiner als beim B-Baum. Wenn alle Schlüsselwörter desselben internen Knotens im selben Plattenblock gespeichert sind, kann der Plattenblock umso mehr Schlüsselwörter enthalten. Je mehr Schlüsselwörter gesucht werden müssen, desto mehr werden gleichzeitig in den Speicher eingelesen. Relativ gesehen wird die Anzahl der IO-Lese- und Schreibvorgänge reduziert.

Angenommen, ein Festplattenblock auf der Festplatte enthält 16 Bytes, ein Schlüsselwort 2 Bytes und ein schlüsselwortspezifischer Informationszeiger 2 Bytes. Die internen Knoten eines B-Baums 9. Ordnung (ein Knoten kann bis zu 8 Schlüsselwörter haben) erfordern 2 Festplatten. Die internen Knoten des B+-Baums benötigen nur 1 Festplattengeschwindigkeit. Wenn die internen Knoten in den Speicher eingelesen werden müssen, benötigt der B-Baum eine Zeit mehr für die Suche nach Plattenblöcken (im Fall einer Platte ist es die Plattenrotationszeit) als der B+-Baum.

2) Die Abfrageeffizienz des B + -Baums ist stabiler

Da der Nicht-Endpunkt nicht der Knoten ist, der letztendlich auf den Dateiinhalt zeigt, sondern nur die Schlüsselwörter im Blattknotenindex. Daher muss jede Stichwortsuche einen Pfad vom Wurzelknoten zum Blattknoten nehmen. Die Pfadlänge aller Schlüsselwortabfragen ist gleich, was zu einer gleichen Abfrageeffizienz für alle Daten führt.

Indizes

Verwenden Sie Indizes, um schnell auf bestimmte Informationen in einer Datenbanktabelle zuzugreifen. Ein Index ist eine Struktur, die die Werte einer oder mehrerer Spalten in einer Datenbanktabelle sortiert, beispielsweise die Spalte „Nachname“ (lname) der Mitarbeitertabelle. Wenn Sie einen bestimmten Mitarbeiter anhand des Nachnamens finden möchten, hilft Ihnen ein Index dabei, diese Informationen schneller zu erhalten, als wenn Sie alle Zeilen in der Tabelle durchsuchen müssten.

Hinweis: Nicht alle Datenbanken verwenden Indizes auf die gleiche Weise.

Als allgemeine Regel müssen Sie nur dann einen Index für eine Tabelle erstellen, wenn die Daten in der indizierten Spalte häufig abgefragt werden. Indizes belegen Speicherplatz und verlangsamen das Hinzufügen, Löschen und Aktualisieren von Zeilen. In den meisten Fällen überwiegen die Geschwindigkeitsvorteile eines Indexes für den Datenabruf seine Vorteile bei weitem.

Weitere technische Artikel zum Thema MySQL finden Sie in der Spalte MySQL-Tutorial.

Das obige ist der detaillierte Inhalt vonKann die Indizierung die Abfrage von Daten in einer Tabelle beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn