Heim > Datenbank > MySQL-Tutorial > Einfache MySQL-Indexplananalyse

Einfache MySQL-Indexplananalyse

WBOY
Freigeben: 2023-05-29 13:16:44
nach vorne
1210 Leute haben es durchsucht

    MySQL einfacher Index

    1. So finden Sie #🎜🎜, wenn es einen gibt kein Index #

    Ignorieren Sie vorerst das Konzept des Index. Wenn Sie einen bestimmten Datensatz jetzt direkt überprüfen möchten, wie durchsuchen Sie ihn?

    Suche auf einer Seite
    Wenn die Tabelle nur sehr wenige Datensätze enthält und eine Seite ausreicht, gibt es zwei Situationen:

    #🎜🎜 ## 🎜🎜#

    Verwenden Sie den Primärschlüssel als Suchbedingung: Dies ist die im vorherigen Artikel erwähnte Methode. Verwenden Sie die Dichotomiemethode, um den Slot im Seitenverzeichnis schnell zu finden, und durchsuchen Sie dann die Datensätze, die der Gruppe entsprechen Steckplatz und finden Sie schließlich den angegebenen Datensatz.
    • Andere Nicht-Primärschlüsselspalten als Suchbedingungen verwenden: Da es auf der Datenseite kein Seitenverzeichnis für Nicht-Primärschlüsselspalten gibt, kann der Steckplatz nicht schnell gefunden werden Durch die Dichotomiemethode können Datensätze nur aus Infimum erhalten werden. Beginnen Sie damit, jeden Datensatz der einfach verknüpften Liste gleichzeitig zu durchlaufen, was ineffizient ist.
    • Suche auf vielen Seiten
    Wenn die Tabelle viele Datensätze enthält, werden viele Datenseiten verwendet, um sie zu speichern. Erfordert 2 Schritte :

    Suchen Sie die Seite, auf der sich der Datensatz befindet.
    • Wiederholen Sie den obigen Suchvorgang innerhalb einer Seite.
    • Wenn kein Index vorhanden ist, können wir die Seite, auf der sich der Datensatz befindet, im Allgemeinen nicht schnell finden. Wir können nur der doppelt verknüpften Liste ab der ersten Seite folgen. Die Seite hat die vorherige Seite und die nächste Seite) sucht weiter und wiederholt dann den obigen Vorgang auf jeder Seite, um den angegebenen Datensatz abzufragen, was das Durchlaufen aller Datensätze erfordert, was sehr zeitaufwändig ist.
    2. Ein einfacher Index

    Da die Positionierungsaufzeichnung aufgrund zu vieler Seiten zu langsam ist, wie kann man das Problem lösen? Möglicherweise möchten Sie im „Seitenverzeichnis“ nachschlagen.

    Das Seitenverzeichnis ist so eingerichtet, dass die Position eines Datensatzes auf der Seite anhand des Primärschlüssels schnell ermittelt werden kann. Daher können wir eine Methode zum Erstellen eines „anderen Verzeichnisses“ untersuchen, um schnell die Seite zu finden, auf der sich der Datensatz befindet.

    Aber es müssen zwei Dinge erledigt werden, bevor dieses „andere Verzeichnis“ fertiggestellt werden kann.

    1. Der Primärschlüsselwert des Benutzerdatensatzes auf der nächsten Seite muss größer sein als der der vorherigen Seite.

    Angenommen, jede Datenseite kann bis zu 3 Datensätze enthalten (Eigentlich kann es eine Menge sein), dann fügen Sie jetzt 3 Datensätze in die Tabelle ein, jeder Datensatz hat 3 Spalten c1, c2, c3. Der Einfachheit halber wurde auch das Speicherzeilenformat vereinfacht, so dass nur Schlüsselattribute übrig bleiben. Die virtuellen Datensätze Infimum und Supremum befinden sich am Anfang bzw. am Ende des Benutzerdatensatzes, mit drei Benutzerdatensätzen in der Mitte.

    Fügen Sie zu diesem Zeitpunkt weiterhin 1 Datensatz ein. Im hypothetischen Fall muss mindestens eine neue Seite zugewiesen werden, sodass die beiden Seiten neu zugewiesen und neu angeordnet werden. Einfache MySQL-Indexplananalyse

    Bitte beachten Sie, dass die beiden in roter Schrift angezeigten Datensätze einen neu eingefügten Datensatz mit einem Primärschlüssel von 4 enthalten, der auf einer neuen Seite platziert werden sollte . Um jedoch die Anforderung zu erfüllen, dass der Primärschlüsselwert des Benutzerdatensatzes auf der nächsten Seite größer sein muss als der Primärschlüsselwert des Benutzerdatensatzes auf der vorherigen Seite, können auch Vorgänge wie das Verschieben von Datensätzen ausgeführt werden wird als „Seitenaufteilung“ bezeichnet. Einfache MySQL-Indexplananalyse

    Und warum ist die neue Seite Seite 28 und nicht 11? Da die Seiten auf der Festplatte möglicherweise nicht nebeneinander liegen, stellen sie lediglich eine verknüpfte Listenbeziehung her, indem sie die Nummern der vorherigen Seite und der nächsten Seite beibehalten.

    2. Erstellen Sie einen Verzeichniseintrag für alle Seiten

    Fügen Sie nun weiterhin Daten zur Tabelle hinzu:
    #🎜 🎜 #

    Um einen Datensatz aus mehreren nicht benachbarten Seiten schnell zu finden, muss ein Verzeichnis für sie erstellt werden, da diese Seiten möglicherweise nicht zusammenhängend auf der Festplatte liegen.

    Einfache MySQL-IndexplananalyseJede Seite entspricht einem Verzeichniseintrag. Jeder Verzeichniseintrag enthält:

    Der kleinste Primärschlüsselwert im Benutzerdatensatz der Seite. Die Verwendung von Schlüssel stellt

    • Seitenzahl dar, und page_no stellt

    • dar. Also, nach der Katalogisierung, eine solche Beziehung :

    Also, jetzt möchte ich den Datensatz mit einem Primärschlüsselwert von 20 finden. Konkret gibt es zwei Schritte:

    # 🎜🎜#Verwenden Sie die Dichotomiemethode, um anhand des Verzeichniseintrags schnell festzustellen, dass sich der Datensatz mit einem Primärschlüsselwert von 20 in Verzeichniseintrag 3 befindet und die Seitennummer, auf der er sich befindet, 9 ist. Da Sie wissen, dass es sich auf Seite 9 befindet, wiederholen Sie den vorherigen Ansatz, um den endgültigen Zieldatensatz zu finden. Einfache MySQL-Indexplananalyse

    An diesem Punkt ist eine einfache Lösung abgeschlossen. Das fertige einfache Verzeichnis hat einen Alias ​​namens Index.

    3. Durch den einfachen Index aufgedeckte Probleme

    Der oben genannte einfache Index ist der vom Autor des Originalbuchs erstellte Inhalt, um den Lesern das Verständnis Schritt für Schritt zu erleichtern ist nicht das Indexierungsschema von innodb .

    Schauen Sie sich dann den oben vorgeschlagenen Index an und sehen Sie, welche Probleme es gibt.

    Frage 1:

    InnoDB verwendet Seiten als Grundeinheit für die Speicherplatzverwaltung, was bedeutet, dass nur bis zu 16 KB kontinuierlicher Speicher eingespart werden können.

    Wenn die Tabelle immer mehr Datensätze enthält, wird ein sehr großer kontinuierlicher Speicherplatz benötigt, um alle Verzeichniseinträge aufzunehmen, was für Tabellen mit großen Datenmengen unrealistisch ist.

    Frage 2:

    Wir müssen oft Datensätze hinzufügen, löschen und ändern, was sich auf den gesamten Körper auswirken kann.

    Wenn ich beispielsweise alle Datensätze auf Seite 28 im Bild oben lösche, muss Seite 28 nicht vorhanden sein und Verzeichniseintrag 2 muss nicht vorhanden sein. Zu diesem Zeitpunkt müssen Sie die Verzeichniselemente nach Verzeichniselement 2 nach vorne verschieben.

    Auch wenn es nicht verschoben wird, wird durch das Platzieren von Verzeichniseintrag 2 als redundant in der Verzeichniseintragsliste immer noch viel Speicherplatz verschwendet.

    Das obige ist der detaillierte Inhalt vonEinfache MySQL-Indexplananalyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    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
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage