Heim  >  Artikel  >  Datenbank  >  Strategie zur Optimierung des MySQL-Index

Strategie zur Optimierung des MySQL-Index

黄舟
黄舟Original
2017-01-20 17:04:581691Durchsuche

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“

Strategie zur Optimierung des MySQL-Index

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,

Strategie zur Optimierung des MySQL-Index

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)!


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
Vorheriger Artikel:MySQL-Index-DatenstrukturNächster Artikel:MySQL-Index-Datenstruktur