„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > ## MySQL LIKE vs. LOCATE: Was ist schneller für den Mustervergleich?

## MySQL LIKE vs. LOCATE: Was ist schneller für den Mustervergleich?

Veröffentlicht am 09.11.2024
Durchsuche:699

##  MySQL LIKE vs LOCATE: Which is Faster for Pattern Matching?

MySQL LIKE vs. LOCATE: Was ist effizienter?

Beim Durchführen von Mustervergleichsabfragen in MySQL haben Sie zwei Hauptoptionen: LIKE Operator und die LOCATE-Funktion. Welcher ist schneller?

Um diese Frage zu beantworten, vergleichen wir die Leistung dieser beiden Ansätze anhand eines einfachen Benchmarks. Die folgende Abfrage verwendet den LIKE-Operator, um Zeilen zu finden, in denen eine Spalte einen bestimmten Text enthält:

SELECT * FROM table WHERE column LIKE '%text%';

Die folgende Abfrage verwendet die LOCATE-Funktion um denselben Vorgang auszuführen:

SELECT * FROM table WHERE LOCATE('text',column)>0;

Das Ausführen dieser Abfragen für einen großen Datensatz zeigt, dass der LIKE-Operator geringfügig schneller ist. vor allem, weil dadurch der zusätzliche Vergleich (> 0) vermieden wird, der für LOCATE erforderlich ist. Hier sind die Ergebnisse eines Benchmarks:

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)

mysql> SELECT @@version;
 ---------------------- 
| @@version            |
 ---------------------- 
| 5.1.36-community-log |
 ---------------------- 
1 row in set (0.01 sec)
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3