Beim Testen auf das Vorhandensein eines Strings in einer MySQL-Spalte mit variabler Zeichenlänge stellt sich die Frage optimale Methode für Effizienz und Geschwindigkeit. Zwei gängige Ansätze sind:
1. INSTR(Spaltenname, 'mystring' ) > 0
2. Spaltenname LIKE '%mystring%'
In Bezug auf die Geschwindigkeit zeigten unsere Tests ein überraschendes Ergebnis: Sowohl INSTR als auch LIKE schneiden bei der Prüfung auf das Vorhandensein von Teilzeichenfolgen identisch ab. Zum Beispiel:
INSTR(Name,'search') > 0 LIKE '%search%'
Beide Abfragen durchsuchten die gesamte Tabelle und dauerten etwa 5,54 Sekunden. Wenn jedoch eine Präfixsuche für eine indizierte Spalte durchgeführt wird, übertrifft der LIKE-Operator mit nur einem Suffix-Platzhalter INSTR deutlich:
LIKE 'search%'
Diese optimierte Präfixsuche dauerte nur 3,88 Sekunden.
Zusätzlich zu INSTR und LIKE unterstützt MySQL auch VOLLTEXT-Suchen für eine verbesserte Leistung. Diese Suchvorgänge sind jedoch am effizientesten, wenn die Tabellenspalte mit FULLTEXT indiziert ist und die gesuchte Zeichenfolge am Anfang der Spalte angezeigt wird.
In der Praxis besteht die Wahl zwischen INSTR und LIKE hängen vom jeweiligen Anwendungsfall ab:
Das obige ist der detaillierte Inhalt vonINSTR vs. LIKE in MySQL: Welche String-Matching-Methode ist schneller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!