Leistungsvergleich von INSTR und LIKE für MySQL String Matching
In MySQL gibt es bei der Suche nach einer Zeichenfolge innerhalb einer Spalte zwei gängige Methoden INSTR und LIKE. Welches ist schneller und effizienter?
INSTR vs LIKE
INSTR(columnname, 'mystring') > 0 gibt „true“ zurück, wenn „mystring“ in „columnname“ gefunden wird, während „columnname LIKE „%mystring%“ true zurückgibt, wenn „mystring“ irgendwo in „columnname“ gefunden wird. Sowohl INSTR als auch LIKE werden für Zeichenfolgenspalten der Typen „varchar“, „text“, „blob“ usw. unterstützt.
Leistungstests
In einem Test zählen Beim Vorkommen von „search“ in einer Tabelle mit mehr als 40.000 Zeilen führten INSTR und LIKE identisch aus und dauerten etwa 5,54 Sekunden. Bei der Verwendung von LIKE mit nur einem Suffix-Platzhalter wie „Suche %“ war die Abfrage jedoch deutlich schneller und dauerte nur 3,88 Sekunden.
Volltextsuche
Obwohl in der ursprünglichen Frage nicht ausdrücklich erwähnt, ist es erwähnenswert, dass VOLLTEXT-Suchen bei textbasierten Abfragen im Allgemeinen schneller sind. Sie erfordern jedoch die Verwendung spezieller Indizes und sind nicht immer für alle Szenarien geeignet.
Fazit
Für vollständige Tabellenscans INSTR und LIKE mit Präfix und Suffix-Platzhalter funktionieren ähnlich. Bei der Suche nach einer Zeichenfolge am Anfang einer Textspalte ist LIKE mit einem Suffix-Platzhalter jedoch wesentlich effizienter. In Fällen, in denen die Leistung von entscheidender Bedeutung ist, kann die Verwendung der Volltextsuche die besten Ergebnisse liefern.
Das obige ist der detaillierte Inhalt vonINSTR vs. LIKE in MySQL: Welche String-Matching-Funktion ist schneller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!