Diese eval basieren nur auf der Where-Klausel zeigen ... je
MySQL verwendet Indizes für diese Operationen:
Um schnell die Zeilen zu finden, die mit einer WHERE-Klausel übereinstimmen.
Um Zeilen aus der Betrachtung auszuschließen. Wenn zwischen mehreren Indizes gewählt werden kann, verwendet MySQL normalerweise den Index, der die kleinste Anzahl von Zeilen (den selektivsten Index) findet. Wenn die Tabelle einen mehrspaltigen Index hat, kann ein beliebiges linkes Präfix des Index vom Optimierer verwendet werden, um nach Zeilen zu suchen. Wenn Sie beispielsweise einen dreispaltigen Index (Spalte1, Spalte2, Spalte3) haben, haben Sie die Suchfunktionen auf (Spalte1), (Spalte1, Spalte2) und (Spalte1, Spalte2, Spalte3) indiziert. Weitere Informationen finden Sie in Abschnitt 9.3.5, "Mehrspaltige Indizes".
Um beim Ausführen von Joins Zeilen aus anderen Tabellen abzurufen. MySQL kann Indizes effizienter für Spalten verwenden, wenn sie als gleichen Typs und derselben Größe deklariert sind. In diesem Kontext werden VARCHAR und CHAR als gleich angesehen, wenn sie als dieselbe Größe deklariert sind. Zum Beispiel haben VARCHAR (10) und CHAR (10) die gleiche Größe, aber VARCHAR (10) und CHAR (15) sind nicht.
Bei Vergleichen zwischen nicht binären Stringspalten sollten beide Spalten denselben Zeichensatz verwenden. Wenn Sie zum Beispiel eine utf8-Spalte mit einer latin1-Spalte vergleichen, können Sie keinen Index verwenden.
Der Vergleich ungleicher Spalten (z. B. Vergleich einer Zeichenspalte mit einer temporären oder numerischen Spalte) kann die Verwendung von Indizes verhindern, wenn Werte nicht direkt ohne Konvertierung verglichen werden können. Für einen gegebenen Wert wie 1 in der numerischen Spalte könnte er mit einer beliebigen Anzahl von Werten in der String-Spalte wie '1', '1', '00001' oder '01 .e1 'verglichen werden. Dies schließt die Verwendung von Indizes für die Zeichenfolge-Spalte aus.
Um den Wert MIN() oder MAX() für eine bestimmte indizierte Spalte zu finden key_col. Dies wird durch einen Präprozessor optimiert, der prüft, ob Sie WHERE key_part_N = constant für alle Schlüsselteile verwenden, die vor key_col im Index auftreten. In diesem Fall führt MySQL einen einzelnen Schlüssel nach jedem Ausdruck MIN() oder MAX() durch und ersetzt ihn durch eine Konstante . Wenn alle Ausdrücke durch Konstanten ersetzt werden, wird die Abfrage sofort zurückgegeben. Zum Beispiel:
Um eine Tabelle zu sortieren oder die Gruppe, wenn die Sortierung oder Gruppierung auf einem äußersten linken Präfix eines verwendbaren Index erfolgt (beispielsweise ORDER BY key_part1, key_part2). Wenn auf alle Schlüsselteile DESC folgt, wird der Schlüssel in umgekehrter Reihenfolge gelesen. Siehe Abschnitt 9.2.1.15, "ORDER BY-Optimierung" und Abschnitt 9.2.1.16, "GROUP BY-Optimierung".
In einigen Fällen kann eine Abfrage optimiert werden, um Werte ohne Abfragen der Datenzeilen abzurufen. (Ein Index, der alle erforderlichen Ergebnisse für eine Abfrage bereitstellt, wird als abdeckender Index bezeichnet.) Wenn eine Abfrage aus Tabellenspalten verwendet, die in einem Index enthalten sind, können die ausgewählten Werte aus dem Indexbaum abgerufen werden Geschwindigkeit:
Danke ... upvote –
Thank @Stack .. Ich habe einen Teil doc von mysql hinzugefügt .. hoffe, nützlich – scaisEdge