Leistungsvergleich: INSTR vs. LIKE
Wenn es um die Suche nach einer Zeichenfolge innerhalb einer MySQL-Spalte vom Typ „varchar“ geht, „ text', 'blob' usw., welche Methode effizienter ist: INSTR(columnname, 'mystring') > 0 oder Spaltenname LIKE '%mystring%'?
Die Antwort
VOLLTEXT-Suchen bieten die beste Leistung. Beim Vergleich von INSTR und LIKE sind jedoch beide Methoden bei regulären, nicht indizierten vollständigen Tabellenscans identisch.
Detaillierter Vergleich
In vom Autor durchgeführten Tests hat INSTR und LIKE schnitten gleichermaßen ab. Wenn jedoch eine Präfixsuche für eine indizierte Spalte mit LIKE und nur einem Suffix-Platzhalter (z. B. Spaltenname LIKE 'search%') durchgeführt wird, übertrifft sie INSTR deutlich.
Implementierung
Sowohl INSTR als auch LIKE scannen die Spalte von links nach rechts und vergleichen die Suchzeichenfolge mit den gespeicherten Daten. INSTR sucht nach einer genauen Übereinstimmung, während LIKE Platzhalterzeichen (% und _) für Teilübereinstimmungen zulässt.
Empfehlung
Für indizierte Spalten, bei denen kein Präfixabgleich erforderlich ist, INSTR und LIKE sind beide praktikable Optionen mit ähnlicher Leistung. Wenn Sie jedoch mit nicht indizierten Tabellen arbeiten oder nur nach Suffixen suchen, wird LIKE mit einem Suffix-Platzhalter für schnellere Ergebnisse empfohlen.
Das obige ist der detaillierte Inhalt vonINSTR vs. LIKE in MySQL: Was ist effizienter für die String-Suche?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!