Heim >Datenbank >MySQL-Tutorial >## MySQL LIKE vs. LOCATE: Was ist schneller für den Mustervergleich?

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

DDD
DDDOriginal
2024-10-25 01:52:30885Durchsuche

##  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;

Wird ausgeführt Diese Abfragen für einen großen Datensatz zeigen, dass der LIKE-Operator geringfügig schneller ist, vor allem weil er den zusätzlichen Vergleich (> 0) vermeidet, 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)

Das obige ist der detaillierte Inhalt von## MySQL LIKE vs. LOCATE: Was ist schneller für den Mustervergleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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