"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > ## 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 ?

Publié le 2024-11-09
Parcourir:422

##  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 la 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 dans lesquelles 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;

L'exécution de ces requêtes sur un grand ensemble de données montre 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)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3