Eine Zusammenfassung der Fuzzy-Abfrage von MySQL wie

Eine Zusammenfassung der Fuzzy-Abfrage von MySQL wie

1. Allgemeine Verwendung:

(1) Mit % verwenden

% stellt ein Platzhalterzeichen für ein oder mehrere Zeichen dar, um beispielsweise die Daten abzufragen, die mit einem Großbuchstaben im Feldnamen beginnen:

(2) Verwendung mit

_ stellt ein Platzhalterzeichen mit nur einem Zeichen dar. Wenn Sie in der obigen Abfrage das % in _ ändern, werden Sie feststellen, dass nur die folgenden Daten gefunden werden können:

2. Die Verwendung ähnlicher Fuzzy-Abfragen führt bei großen Datenmengen zu Indexfehlern und Leistungsproblemen

(1) Vermeiden Sie Fuzzy-Abfragen, die mit % oder _ beginnen

Durch die Erläuterung des Ausführungsplans haben wir festgestellt, dass bei Verwendung einer Fuzzy-Abfrage der Index weiterhin gültig ist, wenn die Abfrage nicht mit % und _ beginnt

Wenn die Abfrage mit % oder _ beginnt, ist der Index ungültig.

(2) Verwendung von Überdeckungsindizes

Wenn sowohl die Abfragebedingungen als auch die Abfrageergebnisse Felder im Index sind, kann dieser Index als abdeckender Index bezeichnet werden. Zu diesem Zeitpunkt ist die Verwendung eines ähnlichen Fuzzy-Abfrageindex effektiv.

Der InnoDB-Primärschlüssel kann nicht zum Index hinzugefügt werden

Hinweis: Bei Verwendung eines überdeckenden Indexes ist die Länge des Feldes durch Anforderungen begrenzt. Wenn die Länge überschritten wird, wird der Index im Allgemeinen ungültig.

Wenn ich das Beschreibungsfeld in meine Abfrage einbeziehe, schlägt auch der abdeckende Index fehl (meine Datenbank wurde getestet und unterstützt nur Felder mit einer maximalen Länge von 255).

(3) Volltextindizierung nutzen

Erstellen Sie einen Volltextindex für das Feld und verwenden Sie dann match(...) versus(...) für die Suche.

Hinweis: Diese Methode zur Volltextindizierung funktioniert nur für englische Wörter und ist nicht benutzerfreundlich genug für chinesische Schriftzeichen. Sie müssen einige Konfigurationsänderungen an der MySQL-Konfigurationsdatei vornehmen, damit chinesische Schriftzeichen unterstützt werden.

(4) Verwenden Sie einige zusätzliche Volltextsuchmaschinen zur Lösung

Lucene, Solr, Elasticsearch usw.

Das Grundprinzip lautet: Ändern Sie ft_min_word_len=3 in der MySQL-Konfigurationsdatei in 1. (Wenn dieses Element nicht verfügbar ist, fügen Sie es einfach direkt hinzu), erstellen Sie dann ein neues Feld zum Speichern der Wortsegmentierungsergebnisse und erstellen Sie einen Volltextindex für dieses Feld. Implementieren Sie dann ein Wortsegmentierungsmodul, um das Wort „jeder ist gut“ in „jeder ist gut, jeder ist gut, jede Familie ist gut“ aufzuteilen. Verwenden Sie dann match .. against anstelle von like %%. Das Abfrageergebnis ist grundsätzlich dasselbe wie das Ergebnis von like (wenn die Wortsegmentierung sinnvoll ist), aber die Effizienz ist mindestens 10-mal höher als bei like.

Zusammenfassen

Dies ist das Ende dieses Artikels über MySQL-Fuzzy-Abfragen. Weitere relevante MySQL-Fuzzy-Abfragen 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:
  • Detaillierte Einführung in die Verwendung von MySql wie Fuzzy-Abfrage-Platzhaltern
  • So lösen Sie das Problem der langsamen Geschwindigkeit von MySQL wie bei Fuzzy-Abfragen
  • Implementierung einer Fuzzy-Abfrage wie %% in MySQL
  • So optimieren Sie die langsame Like-Fuzzy-Abfrage in MySQL

<<:  Eine kurze Diskussion über Makrotasks und Mikrotasks in js

>>:  So implementieren Sie Nginx Reverse Proxy und Load Balancing (basierend auf Linux)

Artikel empfehlen

Erstellen Sie ein Docker-Image mit Dockerfile

Inhaltsverzeichnis Erstellen Sie ein Docker-Image...

CSS3-Kategoriemenüeffekt

Die CSS3-Kategoriemenüeffekte sind wie folgt: HTM...

jQuery realisiert die volle Funktion des Einkaufswagens

In diesem Artikel wird der spezifische Code von j...

Die Organisation W3C gibt Stilempfehlungen für HTML4

Dies ist die Stilempfehlung der W3C-Organisation f...

HTML-Basis-URL-Tag

Seine Funktion besteht darin, einen globalen Stil ...

HTML-Formular und die Verwendung interner Formular-Tags

Code kopieren Der Code lautet wie folgt: <html...

Die Iframe-Aktualisierungsmethode ist bequemer

So aktualisieren Sie Iframe 1. Zum Aktualisieren k...

Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls

Inhaltsverzeichnis Legen Sie beim Erstellen einer...

Eine kurze Diskussion über React Native APP-Updates

Inhaltsverzeichnis App-Update-Prozess Grobes Flus...

Eine Zeile CSS-Code zur Integration von Avatar und Nationalflagge

Es ist Nationalfeiertag und jeder kann es kaum er...