Heim > Datenbank > MySQL-Tutorial > Hauptteil

## Was ist in MySQL schneller: „LIKE' oder „LOCATE' für den String-Abgleich?

Patricia Arquette
Freigeben: 2024-10-25 02:36:30
Original
609 Leute haben es durchsucht

## Which is Faster in MySQL: `LIKE` or `LOCATE` for String Matching?

Welche ist schneller: MySQL LIKE vs. LOCATE?

In MySQL gibt es zwei häufig verwendete Funktionen für den Mustervergleich in Strings: LIKE und LOKALISIEREN. Obwohl beide Funktionen zur Suche nach Teilzeichenfolgen innerhalb einer Zeichenfolge verwendet werden können, unterscheiden sie sich in ihrem Ansatz und ihren Leistungsmerkmalen.

LIKE vs. LOCATE

Der LIKE-Operator verwendet Platzhalter, um Übereinstimmungsmuster von Zeichen. Es unterstützt verschiedene Platzhalterzeichen, einschließlich % (entspricht einer beliebigen Anzahl von Zeichen) und _ (entspricht einem einzelnen Zeichen). Zum Beispiel:

<code class="sql">SELECT * FROM table WHERE column LIKE '%text%';</code>
Nach dem Login kopieren

Diese Abfrage sucht nach allen Zeilen, in denen der Spaltenwert irgendwo darin die Zeichenfolge „text“ enthält.

Andererseits sucht die LOCATE-Funktion nach der Position eines angegebenen Teilstrings innerhalb eines Strings. Es gibt den Index des ersten Vorkommens der Teilzeichenfolge zurück oder 0, wenn die Teilzeichenfolge nicht gefunden wird. Beispiel:

<code class="sql">SELECT * FROM table WHERE LOCATE('text', column) > 0;</code>
Nach dem Login kopieren

Diese Abfrage sucht nach allen Zeilen, in denen der Spaltenwert irgendwo darin die Teilzeichenfolge „text“ enthält.

Leistungsvergleich

Im Allgemeinen ist der LIKE-Operator geringfügig schneller als LOCATE. Dies liegt daran, dass LIKE keinen zusätzlichen Vergleich durchführen muss, um zu prüfen, ob das Ergebnis größer als 0 ist.

Um diesen Leistungsunterschied zu demonstrieren, berücksichtigen Sie die folgenden Benchmarks:

<code class="sql">mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar'));
+---------------------------------------------+
| BENCHMARK(100000000,LOCATE('foo','foobar')) |
+---------------------------------------------+
|                                           0 |
+---------------------------------------------+
1 row in set (3.24 sec)

mysql> SELECT BENCHMARK(100000000,LOCATE('foo','foobar') > 0);
+-------------------------------------------------+
| BENCHMARK(100000000,LOCATE('foo','foobar') > 0) |
+-------------------------------------------------+
|                                               0 |
+-------------------------------------------------+
1 row in set (4.63 sec)


mysql> SELECT BENCHMARK(100000000,'foobar' LIKE '%foo%');
+--------------------------------------------+
| BENCHMARK(100000000,'foobar' LIKE '%foo%') |
+--------------------------------------------+
|                                          0 |
+--------------------------------------------+
1 row in set (4.28 sec)</code>
Nach dem Login kopieren

As Die Benchmark-Ergebnisse zeigen, dass LIKE bei der Suche nach einem Teilstring innerhalb eines Strings geringfügig schneller ist als LOCATE. Allerdings ist der Leistungsunterschied für die meisten praktischen Anwendungsfälle relativ gering.

Das obige ist der detaillierte Inhalt von## Was ist in MySQL schneller: „LIKE' oder „LOCATE' für den String-Abgleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!