Maison >base de données >tutoriel mysql >## MySQL LIKE vs LOCATE : lequel est le plus rapide pour la correspondance de modèles ?

## MySQL LIKE vs LOCATE : lequel est le plus rapide pour la correspondance de modèles ?

DDD
DDDoriginal
2024-10-25 01:52:30884parcourir

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

MySQL LIKE vs LOCATE : lequel est le plus efficace ?

Lorsque vous effectuez des requêtes de correspondance de modèles dans MySQL, vous disposez de deux options principales : le LIKE opérateur et la fonction LOCATE. Laquelle est plus rapide ?

Pour répondre à cette question, comparons les performances de ces deux approches à l’aide d’un simple benchmark. La requête suivante utilise l'opérateur LIKE pour rechercher les lignes où une colonne contient un texte spécifique :

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

La requête suivante utilise la fonction LOCATE pour effectuer la même opération :

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

En cours d'exécution Ces requêtes sur un grand ensemble de données montrent que l'opérateur LIKE est légèrement plus rapide, principalement parce qu'il évite la comparaison supplémentaire (> 0) requise par LOCATE. Voici les résultats d'un benchmark :

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)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn