Maison > base de données > tutoriel mysql > le corps du texte

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

DDD
Libérer: 2024-10-25 01:52:30
original
783 Les gens l'ont consulté

##  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%';
Copier après la connexion

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

SELECT * FROM table WHERE LOCATE('text',column)>0;
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!