Später in diesem Abschnitt werden praktische und leicht verständliche Beispiele verwendet, um die tatsächliche Auslösung des Index zu veranschaulichen, um die beim Hinzufügen von Indizes verwendete Strategie zu optimieren.
1. Indextyp
1.1 B-Tree-Index
Hinweis: Im Großen und Ganzen verwenden sie alle ausgeglichene Bäume spezifische Implementierung ,Jede Engine ist etwas anders,
Streng genommen verwendet die NDB-Engine beispielsweise T-Tree, Myisam und Innodb standardmäßig den B-Tree-Index
Aber abstrakt- - Das B-Tree-System kann als „sortierte Schnellsuchstruktur“ verstanden werden. Weitere Analysen finden Sie unter Mysql-index-BTree-Typ [Vereinfacht]
1.2 Hash-Index
In der Speichertabelle ist der Standardwert der Hash-Index. Die theoretische Abfragezeitkomplexität von Hash beträgt O(1)
Frage: Da die Hash-Suche so effizient ist, warum verwenden nicht alle einen Hash-Index?
Antwort:
1: Das von der Hash-Funktion berechnete Ergebnis ist zufällig. Wenn die Daten beispielsweise auf der Festplatte abgelegt werden und der Primärschlüssel eine ID ist, wächst die ID. Die der ID entsprechenden Zeilen werden zufällig auf der Festplatte platziert.
2: Bereichsabfragen können nicht optimiert werden.
3: Präfixindex kann nicht verwendet werden. Beispielsweise in Btree. Der Wert der Feldspalte „hellopworld“ und Index hinzufügen, Abfrage xx=helloword, Sie können natürlich den Index verwenden, xx=hello, Sie können auch den Index (linker Präfixindex) verwenden. Weil die Beziehung zwischen hash('helloword') und hash('hello') immer noch zufällig ist. Tatsächlich liegt es daran, dass HASH genau ist
4: Sortierung kann nicht optimiert werden.
5 : Zeilensicherung ist erforderlich. Das heißt, um den Datenspeicherort über den Index zu erhalten, müssen Sie zur Tabelle zurückkehren, um die Daten abzurufen
2. Häufige Missverständnisse von Btree-Indizes
2.1 wobei Indizes zu Spalten hinzugefügt werden, die üblicherweise in Bedingungen verwendet werden
Beispiel: wobei cat_id=3 und Preis>100; //Dritte Spalte abfragen, Produkte über 100 Yuan
Fehler: auf cat_id und, Indizes werden zum Preis hinzugefügt.
Fehler: Nur cat_id oder Preisindex können verwendet werden, da es sich um eine unabhängige Indexstruktur handelt und nur einer gleichzeitig verwendet werden kann. Eine detaillierte Beschreibung der Anordnung finden Sie unter „Mysql-Intuitive Illustration of Index Structure“
2.2 Damit der Index in einem mehrspaltigen Index funktioniert, muss er die Anforderungen an das linke Präfix erfüllen .
Fehler: Nach dem Erstellen eines Indexes für mehrere Spalten funktioniert der Index unabhängig davon, welche Spalte abgefragt wird
Nehmen Sie Index(a,b,c) als Beispiel,
3. Zusammenfassung:
1. Die Reihenfolge des gemeinsamen Indexes folgt dem Prinzip des linken Präfixes und muss Schicht für Schicht kohärent sein kein Kontext, wie die Abfragebeispiele 4 und 5 oben
2 Bei Bereichsabfragen wie
3 verwendet werden Beim Verschachteln einer Ebene nach der anderen wird die Reihenfolgensortierung verwendet, und die Reihenfolgensortierung ist nicht an der Where-Bedingung beteiligt. Achten Sie auf das Problem, dass [Reihenfolge a nach Feld a] tatsächlich falsch ist Vorschlag, weil es bereits gleich ist, welche Unterbestellung platziert werden soll
4 In der Wo-Anweisung gibt es in der Auswahlabfrage keine Mehrfachbedingungen Die Reihenfolge, aber Sie müssen auf die Reihenfolge achten, wann Hinzufügen des Index, das Gleiche.
5. So funktioniert die Gruppe beim Gruppieren: Zuerst sortieren, eine temporäre Tabelle erstellen. Wenn Sie einen Index erstellen, können Sie sich die Notwendigkeit ersparen, eine temporäre Tabelle zu erstellen, damit der Index für die Gruppe gültig ist
Das Obige ist der Inhalt der MySQL-Index-Optimierungsstrategie. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!