Einführung Die meisten Leute, die schon einmal Datenbanken verwendet haben, kennen die Ähnlichkeiten und Unterschiede zwischen den Zeichen „like“ und „=“ in Bezug auf die Funktion. Lassen Sie mich sie hier kurz zusammenfassen: 1. Unterschiede: Like kann für Fuzzy-Abfragen verwendet werden, während '=' diese Funktion nicht unterstützt; fragen Sie wie im folgenden Beispiel die Daten in der Infotabelle ab, deren erster Buchstabe der Feld-ID 1 ist: Wählen Sie * aus Informationen, wo die ID beispielsweise „1 %“ ist; 2. Ähnlichkeiten: Sowohl „like“ als auch „=“ können für eine präzise Suche verwendet werden. Die folgenden Beispiele fragen beispielsweise alle die Ergebnisse der Infotabelle ab, bei denen die Feld-ID gleich „12345“ ist: Wählen Sie * aus Informationen, wo die ID beispielsweise „12345“ ist; Oben sind die Ähnlichkeiten und Unterschiede zwischen „like“ und „=“ in den zurückgegebenen Ergebnissen aufgeführt. Dann fragen neugierige Freunde vielleicht: Wie sieht es mit dem Hinrichtungsprozess aus? Ist der Ausführungsprozess von MySQL derselbe, unabhängig davon, ob er auf like oder '=' stößt? Das stimmt, Dinge können nicht nur nach ihrem Aussehen beurteilt werden. Wenn Sie genau hinschauen, werden Sie feststellen, dass „like“ und das Gleichheitszeichen „=“ nicht so einfach sind. Im Folgenden werden wir den wirklichen Unterschied zwischen den beiden im Detail analysieren~~~ Text Lassen Sie uns zunächst das Schlüsselwort „explain“ in MySQL einführen. „explain“ bedeutet Ausführungsplan, d. h. verwenden Sie diesen Befehl, um zu sehen, wie dieses SQL ausgeführt wird. Erläutern Sie „Select * from info“, wo die ID beispielsweise „12345“ lautet. Dann testen wir die Abfrage mit „erklären“ unter „like“ und „=“. Testen wir zunächst die indizierten Felder: ERKLÄREN AUSWÄHLEN * AUS crms_kunde WO ID = "7cf79d7c8a3a4f94b5373b3ec392e32d"; Ersetzen wir nun "=" durch like und probieren es aus: ERKLÄREN AUSWÄHLEN * AUS crms_kunde WO ID WIE '7cf79d7c8a3a4f94b5373b3ec392e32d'; Durch Vergleichen können Sie feststellen, dass die Daten im Typfeld und im Extrafeld der beiden zurückgegebenen Ergebnisse unterschiedlich sind. Warum sind sie unterschiedlich und was bedeuten sie? Feld „Typ“ Das Typfeld ist ein optionaler Wert und die Werte werden von der niedrigsten zur höchsten Leistung wie folgt sortiert:
Aus der Tabelle ist deutlich ersichtlich, dass const eine konstante Suche und RANGE eine Bereichssuche in der Indexspalte ist, sodass die Leistung deutlich widergespiegelt wird. Was stellt also das Extra-Feld bei Verwendung einer Like-Abfrage dar? Was bedeutet „Wo verwenden“ im Extra-Feld? Zusätzliches Feld 1. Das Feld „Extra“ ist auch eine sehr wichtige Spalte in der Explain-Ausgabe, die wichtige ergänzende Informationen zum Abfrageplan während des Abfrageausführungsprozesses des MySQL-Abfrageoptimierers darstellt. 2. Die Verwendung von „where“ im Extra-Feld bedeutet, dass der MySQL-Server filtert, nachdem die Speicher-Engine die Zeile abgerufen hat. Im Vergleich zur Verwendung von '=' gibt es daher einen weiteren Schritt im Suchvorgang. Aus der obigen Zusammenfassung können wir offensichtlich schließen, dass bei der Verwendung von Indexfeldern für bedingte Abfragen die Leistung von „=“ schneller ist als die von „like“. Glauben Sie, dass dies das Ende ist? Es gibt jedoch keine Einige Freunde fragen vielleicht: „Was ist mit nicht indizierten Feldern?“ Ja, testen wir weiterhin nicht indizierte Felder. ERKLÄREN AUSWÄHLEN * AUS crms_kunde WO Kundenname = "Zhang Fei"; -------------------------------------------------- ERKLÄREN AUSWÄHLEN * AUS crms_kunde WO Kundenname LIKE 'Kundenname'; Lassen Sie uns die gleichen beiden Anweisungen mit Ausnahme von "=" und wie folgt ausführen: wie: Es ist ersichtlich, dass „like“ und „=“ identisch sind, wenn es sich um ein Nichtindexfeld handelt, und es keinen Unterschied in der Leistung gibt. (Natürlich gibt es noch viele weitere Felder in „Explain“, und ich werde sie später einzeln erläutern.) abschließend Durch unsere unermüdlichen Bemühungen können wir zu dem Schluss kommen, dass die Leistung von like und "=" bei Abfragen unter Verwendung nicht indizierter Felder gleich ist. Bei Verwendung indizierter Felder hat "=" eine bessere Leistung als like, da "=" direkt auf den Index trifft und nur einmal gelesen wird, während like eine Bereichsabfrage erfordert. ~~~~ Dies ist das Ende dieses Artikels über die MySQL-Optimierung der Leistung von like und =. Weitere relevante MySQL-Inhalte zur Leistung von like und = finden Sie in den vorherigen Artikeln von 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:
|
<<: Verwendung des Linux-Befehls ipcs
>>: Details zum Schreiben von React in einem Vue-Projekt
1. Beim Entwerfen einer Webseite ist das Bestimmen...
Inhaltsverzeichnis Überblick Objektrestattribut E...
1 Einleitung Nachdem „Maven Springboot mit einem ...
In diesem Artikel wird der spezifische Code von R...
Ich habe vor Kurzem in einer neuen Firma angefang...
Beim Erstellen von HTML-Webseiten mit Dreamweaver...
Offizielle Website-Adresse von CentOS https://www...
Inhaltsverzeichnis 【Code-Hintergrund】 【Code-Imple...
Inhaltsverzeichnis 1. Schlüsselwörter 2. Dekonstr...
In diesem Artikel haben wir den Startvorgang von ...
Überblick Ich verwende Docker seit über einem Jah...
Ich werde nicht viel Unsinn erzählen, schauen wir...
Inhaltsverzeichnis 1. Einleitung 2. Analyse des f...
Weiterleitung zwischen zwei verschiedenen Servern...
1. Datendeduplizierung Bei der täglichen Arbeit k...