So optimieren Sie die langsame Like-Fuzzy-Abfrage in MySQL

So optimieren Sie die langsame Like-Fuzzy-Abfrage in MySQL

1. Einleitung:

Ich habe ein „Studentenverwaltungssystem“ erstellt, das eine Studententabelle und vier Tabellen (Gruppentabelle, Klassentabelle, Tag-Tabelle, Stadttabelle) für gemeinsame Fuzzy-Abfragen enthält. Die Effizienz ist sehr gering, daher habe ich darüber nachgedacht, wie ich die Effizienz ähnlicher Fuzzy-Abfragen verbessern kann.

Hinweis: Bevor Sie diesen Blog lesen, überprüfen Sie bitte: So zeigen Sie die Ausführungszeit von SQL-Anweisungen in MySQL an

2. Die erste Idee besteht darin, einen Index zu erstellen

1. Der Index des Schlüsselworts „like %keyword“ ist ungültig, daher wird ein vollständiger Tabellenscan verwendet.

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

3. Wenn der Index %keyword% ungültig ist, verwenden Sie einen vollständigen Tabellenscan.

Getestet mit Explain:

Originaltabelle (Hinweis: Der Fall verwendet die Studententabelle als Beispiel)

-- Benutzertabelle, Tabelle erstellen t_users(
                        ID int Primärschlüssel auto_increment,
-- Benutzername varchar(20),
-- Passwort password varchar(20),
-- Realname real_name varchar(50),
-- Geschlecht 1 bedeutet männlich 0 bedeutet weiblich Geschlecht int,
--Geburtsdatum,
-- Handynummer mobile varchar(11),
-- Der hochgeladene Avatar-Pfad head_pic varchar(200)
);

Erstellen eines Indexes

#Index erstellen Indexname für Tabellenname (Spaltenname);                 
Erstellen Sie einen Index-Benutzernamen für t_users (Benutzername).

Wenn der Index %keyword% ungültig ist, verwenden Sie den vollständigen Tabellenscan.

erklären wähle ID, Benutzername, Passwort, richtigen Namen, Geschlecht, Geburtsdatum, Handynummer, Kopfbild 
 von t_users, wobei der Benutzername wie „%h%“ ist;

wie Keyword%-Index ist gültig.

 erklären wähle ID, Benutzername, Passwort, richtigen Namen, Geschlecht, Geburtsdatum, Handynummer, Kopfbild 
 von t_users, wo der Benutzername wie „wh%“ ist;

Beispielsweise ist der %keyword-Index ungültig und es wird ein vollständiger Tabellenscan verwendet.

3. INSTR

Ich hatte zunächst noch nie davon gehört, aber nachdem ich heute einige Informationen nachgeschlagen hatte, erfuhr ich von dieser wertvollen Sache.

instr(str,substr) : Gibt die Position des ersten Vorkommens von substr im String str zurück. Wenn der String nicht gefunden wird, wird 0 zurückgegeben, andernfalls die Position (beginnend bei 1).

#instr(str,substr)-Methode wähle ID, Benutzername, Passwort, richtigen Namen, Geschlecht, Geburtsdatum, Handynummer, Kopfbild 
      von t_users  
      wobei instr(Benutzername,'wh')>0 #0.00081900
#Fuzzy-Abfrage: Wähle ID, Benutzername, Passwort, echten Namen, Geschlecht, Geburtsdatum, Handynummer und Kopfbild aus. 
        von t_users 
        wobei Benutzername wie „whj“ ist; # 0,00094650

Der Hauptgrund, warum der Effizienzunterschied zwischen den beiden nicht groß ist, liegt darin, dass die Daten klein sind. Um den besten Effekt zu erzielen, ist es am besten, mehr Originaldaten zum Testen vorzubereiten.

P.S. Verwendet Like einen Index?

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.

Zusammenfassen

Dies ist das Ende dieses Artikels zur Optimierung der langsamen Like-Fuzzy-Abfrage in MySQL. Weitere Informationen zur Optimierung der langsamen Like-Fuzzy-Abfrage in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

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
  • Eine Zusammenfassung der Fuzzy-Abfrage von MySQL wie

<<:  Installieren Sie .NET 6.0 im CentOS-System mithilfe eines Cloud-Servers

>>:  Schnelles Verständnis des Vue-Routing-Navigationsschutzes

Artikel empfehlen

Beispiel-Tutorial für MySQL-Datenbanktransaktionen

Inhaltsverzeichnis 1. Was ist eine Transaktion? 2...

Das WeChat-Applet realisiert die Funktion zum Hochladen von Bildern

In diesem Artikelbeispiel wird der spezifische Co...

Erläuterung der Lösung zur mobilen H5-Bildgenerierung in JavaScript

Derzeit gibt es viele Betriebsaktivitäten für öff...

HTML-Tutorial: Definitionsliste

<br />Originaltext: http://andymao.com/andy/...

Detaillierte Erklärung der Tomcat-Verzeichnisstruktur

Inhaltsverzeichnis Verzeichnisstruktur bin-Verzei...

Was bedeutet das „a“ in rgba? CSS RGBA-Farbleitfaden

RGBA ist eine CSS-Farbe, mit der Farbwert und Tra...

Beispiel für die Anzeige von Bildjalousien mit reinem CSS

Lassen Sie mich Ihnen zunächst den fertigen Effek...

Detaillierte Erklärung der Destrukturierungszuweisungssyntax in Javascript

Vorwort Die erstmals in ES6 eingeführte „Destruct...

Eine kurze Erläuterung, wann MySQL interne temporäre Tabellen verwendet

Gewerkschaftsexekution Verwenden Sie zur Vereinfa...

Verschiedene Möglichkeiten zum Ändern der Hintergrundbildfarbe mit CSS3

CSS3 kann die Farbe von Bildern ändern. Ab sofort...

Anfänger lernen einige HTML-Tags (1)

Anfänger können HTML lernen, indem sie einige HTM...