Vorwort: Index Pushdown (ICP) ist eine Optimierung für Situationen, in denen MySQL Indizes verwendet, um Zeilen aus einer Tabelle abzurufen.
Durch Index-Pushdown kann die Anzahl der Zugriffe der Speicher-Engine auf die Datentabelle und die Anzahl der Zugriffe des MySQL-Servers auf die Speicher-Engine reduziert werden. Sind Sie immer noch ein wenig verwirrt? Das stimmt. Es besteht kein Zweifel, dass der obige Absatz ziemlich schwer zu verstehen ist, aber lassen Sie sich bitte nicht entmutigen. Ich werde die am einfachsten zu verstehende Sprache verwenden, um Ihnen zu zeigen, wie Sie Index-Pushdown verstehen. Um es zusammenzufassen:
1. Prinzip des ganz linken Präfixes Der Index kann in folgenden Situationen verwendet werden: Wählen Sie * FROM USER WHERE id = 1 SELECT * FROM USER WHERE id = 1 und name = 'zhangsan' SELECT * FROM USER WHERE id = 1 und Name = 'zhangsan' und Alter = 18 In den folgenden Situationen kann der Index nicht verwendet werden: Wählen Sie * vom Benutzer aus, wobei Name = "zhangsan" ist. SELECT * FROM USER WHERE Alter = 18 SELECT * FROM USER WHERE Name = 'zhangsan' und Alter = 18 Bei einem gemeinsamen Index führt 2. Zurück zur Tabelle
Hier konzentrieren wir uns auf Clustered-Indizes. Die offizielle Dokumentation enthält die folgende Beschreibung
Wenn 3. Index-PushdownErstellen Sie zuerst eine Benutzertabelle CREATE TABLE `student` ( `id` int(11) NICHT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `Alter` int DEFAULT 0, `Klasse` varchar(255) DEFAULT NULL, Primärschlüssel (`id`), SCHLÜSSEL `index_two` (`Name`,`Alter`) )ENGINE=InnoDB; //Fügen Sie dieser Tabelle einen zusammengesetzten Index (`Name`,`Alter`) hinzu Einfügen von Daten in die Tabelle INSERT INTO `student` (`Name`, `Alter`, `Klasse`) VALUES ('pengpeng', 21, '1'); INSERT INTO `student` (`Name`, `Alter`, `Klasse`) VALUES ('pengpeng', 22, '2'); INSERT INTO `student` (`Name`, `Alter`, `Klasse`) VALUES ('pengpeng', 23, '3'); INSERT INTO `student` (`Name`, `Alter`, `Klasse`) VALUES ('pengpeng', 24, '4'); INSERT INTO `student` (`Name`, `Alter`, `Klasse`) VALUES ('pengpeng', 25, '5'); Die in die Abfrage eingefügten Daten lauten wie folgt Erklären Sie als nächstes das folgende SQL Erläutern Sie „Select * from student“, wobei der Name beispielsweise „peng%“ und das Alter 23 sind. Sie können sehen, dass das Feld Extra als USING INDEX CONDITION angezeigt wird, was darauf hinweist, dass dieses SQL Index-Pushdown verwendet. Lassen Sie uns die obige SQL-Anweisung analysieren:
Fragen- und Antwortbereich Frage 1: Wenn die zusammengesetzte Indexspalte (Name, Alter, Adresse) lautet, kann das folgende SQL den Index verwenden? Wählen Sie * vom Studenten, wobei der Name beispielsweise „peng%“ und das Alter 23 ist. Ja, wenn auf „like“ gestoßen wird, wird die Übereinstimmung nachfolgender Elemente unterbrochen, aber nur das Namensfeld kann verwendet werden. MySQL führt die Übereinstimmung nach rechts weiter aus, bis es auf eine Bereichsabfrage (>, <, between, like) stößt und die Übereinstimmung beendet. Die Bereichsspalte kann den Index verwenden, aber die Spalten, die der Bereichsspalte folgen, können den Index nicht verwenden. Das heißt, der Index wird höchstens für eine Bereichsspalte verwendet. Wenn in der Abfragebedingung also zwei Bereichsspalten vorhanden sind, kann der Index nicht vollständig genutzt werden. Frage 2: Kann Index-Pushdown nur in gemeinsamen Indizes existieren? Ja, Index-Pushdown ist bei nicht verknüpften Indizes nicht möglich. Frage 3: In welchen Situationen kann Index-Pushdown nicht verwendet werden?
Frage 4 : Wie schalte ich den Index-Pushdown ein und aus? // Index-Pushdown ist standardmäßig aktiviert set optimizer_switch='index_condition_pushdown=off'; // Deaktivieren set optimizer_switch='index_condition_pushdown=on'; // Aktivieren Zusammenfassen Die Optimierung des Index-Pushdowns für Nicht-Primärschlüsselindizes kann die Anzahl der Tabellenrückgaben effektiv reduzieren und die Effizienz von Abfragen erheblich verbessern. In der täglichen Arbeit können Sie Index-Pushdown verwenden, um den Geschäftsdurchsatz zu verbessern, indem Sie die Indizes entsprechend den Geschäftsbedingungen optimieren. Dies ist das Ende dieses ausführlichen Artikels über MySQL-Index-Pushdown. Weitere relevante MySQL-Index-Pushdown-Inhalte finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: CSS verwendet die BEM-Namenskonvention
>>: Detaillierte Einführung in das CSS-Prioritätswissen
Was ist Lastenausgleich? Wenn ein Domänenname auf...
XMeter API bietet einen umfassenden Online-Schnit...
Problemphänomen: [root@localhost ~]# Docker-Image...
Was ist ein Ansichtsfenster? Mobile Browser platz...
Versionsupdate, das Passwortfeld im Originalbenut...
Ich habe zufällig ein tolles Tutorial zum Thema k...
Körperteil: <button>Licht ein-/ausschalten&...
1. Überprüfen Sie die PHP-Version nach dem Aufruf...
Inhaltsverzeichnis 1. Einleitung 2. Szenario 3. S...
Dieser Artikel stellt einige Aspekte von HTML-Tag...
1. Verwenden Sie zur Ausführung weiterhin ein PHP...
1. Allgemeine Verwendung: (1) Mit % verwenden % s...
Wirkung html <Text> <div Klasse="In...
Kerncode /*-------------------------------- Suche...
Viele fragen sich vielleicht: Muss der Text auf d...