So lösen Sie das Problem der langsamen Geschwindigkeit von MySQL wie bei Fuzzy-Abfragen

So lösen Sie das Problem der langsamen Geschwindigkeit von MySQL wie bei Fuzzy-Abfragen

Frage: Warum ist die Like-Fuzzy-Abfrage immer noch so langsam, obwohl der Index erstellt wurde?

Zum Beispiel, ob ein Index verwendet werden soll?

1. Der Index des Schlüsselworts „like %keyword“ ist ungültig, daher wird ein vollständiger Tabellenscan verwendet. Sie können jedoch die Flip-Funktion + Fuzzy-Abfrage vorher verwenden, z. B. + Flip-Funktionsindex erstellen = Flip-Funktionsindex anstelle eines vollständigen Tabellenscans verwenden.

2. Als ob der Keyword%-Index gültig wäre.

3. Der Index „like %keyword%“ ist ungültig und der umgekehrte Index kann nicht verwendet werden.

Ein einfacher Test mit MySQL-Explain sieht wie folgt aus:

Erklären Sie „select * from company_info“, wobei CNAME wie „%小%“ aussieht.

Erklären Sie „select * from company_info“, wobei Cname wie „小%“ aussieht.

Oracle-ähnliche „%...%“-Optimierung

1. Versuchen Sie, nicht „%%“ zu verwenden.

2. Für '%' (nicht beginnend mit %) kann Oracle den Index auf die Spalte anwenden

3. Für like '%…' (endet nicht mit %) können Sie reverse + function index verwenden, um es in like '%' zu ändern.

4. Wenn Sie etwas wie „%%“ verwenden müssen, lösen Sie das Problem mit der internen Oracle-Funktion INSTR().

select * from emp2 where job like '%RE%' and ename like '%A%' and mgr like '%3%' ; --Scannen Sie die gesamte Tabelle, was langsam ist select * from emp where instr(job,'RE')>0 and instr(ename,'A')>0 and instr(mgr,'3')>0 ; --Suchen Sie nur nach Feldern, was schnell ist

INSTR in MySQL (nicht dasselbe wie in Oracle)

INSTR(Zeichenfolge,Teilzeichenfolge)

Gibt die Position des ersten Vorkommens von substr in der Zeichenfolge str zurück. Dies ist identisch mit der Zwei-Argument-Form von LOCATE(), außer dass die Reihenfolge der Argumente umgekehrt ist.

INSTR(Feldname, Zeichenfolge)

Diese Funktion gibt die Position einer Zeichenfolge im Inhalt eines Felds zurück. Wenn die Zeichenfolge nicht gefunden wird, gibt sie 0 zurück, andernfalls gibt sie die Position zurück (beginnend bei 1).

SELECT * FROM tblTopic ORDER BY INSTR( topicTitle, 'ha' ) > 0 DESC
SELECT INSTR( ThemaTitel, 'ha' ) FROM tblTopic

Später habe ich versucht, das SQL-Statement zur Abfrage einer Tabelle in mehrere SQL-Statements aufzuteilen, diese gleichzeitig auf dem Server auszuführen und die Ergebnisse anschließend zusammenzuführen. Leider sind meine Kenntnisse zu gering, sodass die Umsetzung nicht so gut ist.

Ich habe auch versucht, einen Volltextindex zu erstellen, aber die Datenbank hat dies nicht zugelassen.

Schließlich ging die Nachfrageseite einen Kompromiss ein und übernahm den Index im Format Like Keyword%

Wenn mir jemand einen Tipp zur Lösung der unscharfen Like-Abfrage geben könnte, wäre ich sehr dankbar!

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Einführung in die Verwendung von MySql wie Fuzzy-Abfrage-Platzhaltern
  • Implementierung einer Fuzzy-Abfrage wie %% in MySQL
  • Eine Zusammenfassung der Fuzzy-Abfrage von MySQL wie
  • So optimieren Sie die langsame Like-Fuzzy-Abfrage in MySQL

<<:  Die Scroll-Ansicht des WeChat-Applets realisiert einen Links-Rechts-Verknüpfungseffekt

>>:  Webinterview: Der Unterschied zwischen MVC und MVVM und warum Vue nicht vollständig mit MVVM kompatibel ist

Artikel empfehlen

Grundsätze für die Bereitstellung und Konfiguration mehrerer Tomcat-Instanzen

1. Schalten Sie die Firewall aus und übertragen S...

Einrichten der React-Native-Umgebung und grundlegende Einführung

Umgebungsvorbereitung 1. Umweltkonstruktion React...

Docker-Image-Analysetool - Analyse des Tauchprinzips

Heute empfehle ich ein solches Open-Source-Tool z...

Einige Tipps zur Beschleunigung der Entwicklung von WeChat-Miniprogrammen

1. Erstellen Sie eine Seite mit app.json Gemäß un...

Detaillierte Erklärung zum Einfügen gängiger Nginx-Befehle in Shell-Skripte

1. Erstellen Sie einen Ordner zum Speichern von N...

So installieren und konfigurieren Sie WSL unter Windows

Was ist WSL Zitat aus der Baidu-Enzyklopädie: Das...

Detaillierte Erklärung des Vue3-Sandbox-Mechanismus

Inhaltsverzeichnis Vorwort Browser kompilierte Ve...

Sprungcode für HTML-Seite

Speichern Sie den folgenden Code als Standard-Home...

Einführung in 10 Online-Entwicklungstools für Webdesign

1. Online-Textgenerator BlindTextGenerator: Für D...