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

Richtiger Einsatz von MySQL-Partitionstabellen

Übersicht über partitionierte MySQL-Tabellen Wir ...

So überwachen und löschen Sie abgelaufene Sitzungen in Tomcat

Vorwort Ich habe zufällig entdeckt, dass die halb...

Detaillierte Erklärung von JavaScript Reduce

Inhaltsverzeichnis Karte Filter manche jeder Inde...

Optimieren der langsamen Abfrage von MySQL-Aggregatstatistikdaten

Vorne geschrieben Wenn wir in unserem täglichen L...

Tutorial zu den Grundlagen von JavaScript und JQuery Framework

Inhaltsverzeichnis 1. JS-Objekt DOM –1, Funktion ...

HTML-Tabellen-Tag-Tutorial (33): Attribut für vertikale Zellenausrichtung VALIGN

In vertikaler Richtung können Sie die Zellenausri...

So verfolgen Sie Benutzer mit JS

Inhaltsverzeichnis 1. Synchrones AJAX 2. Asynchro...

Problem mit der Iframe-QRC-Zuweisung (serverseitig)

Ich bin heute auf dieses Problem gestoßen. Ich hab...

CSS Sticky Footer Mehrere Implementierungen

Was ist „Sticky Footer“ Der sogenannte „Sticky Fo...

14 praktische Erfahrungen zur Reduzierung von SCSS-Code um 50 %

Vorwort Sass ist eine Erweiterung der CSS3-Sprach...

Detaillierte Erklärung des in JavaScript integrierten Date-Objekts

Inhaltsverzeichnis Date-Objekt Erstellen eines Da...

Eine kurze Diskussion über Browserkompatibilitätsprobleme in JavaScript

Die Browserkompatibilität ist der wichtigste Teil...