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

## Qu'est-ce qui est le plus rapide dans MySQL : `LIKE` ou `LOCATE` pour la correspondance de chaînes ?

Patricia Arquette
Libérer: 2024-10-25 02:36:30
original
609 Les gens l'ont consulté

## Which is Faster in MySQL: `LIKE` or `LOCATE` for String Matching?

Laquelle est la plus rapide : MySQL LIKE vs LOCATE ?

Dans MySQL, il existe deux fonctions couramment utilisées pour la correspondance de modèles dans les chaînes : LIKE et LOCALISER. Bien que les deux fonctions puissent être utilisées pour rechercher des sous-chaînes dans une chaîne, elles diffèrent par leur approche et leurs caractéristiques de performances.

LIKE vs LOCATE

L'opérateur LIKE utilise des caractères génériques pour faire correspondre les modèles de personnages. Il prend en charge divers caractères génériques, notamment % (correspond à n'importe quel nombre de caractères) et _ (correspond à un seul caractère). Par exemple :

<code class="sql">SELECT * FROM table WHERE column LIKE '%text%';</code>
Copier après la connexion

Cette requête recherche toutes les lignes où la valeur de la colonne contient la chaîne "texte" n'importe où à l'intérieur.

D'autre part, la fonction LOCATE recherche la position d'une sous-chaîne spécifiée dans une chaîne. Il renvoie l'index de la première occurrence de la sous-chaîne, ou 0 si la sous-chaîne n'est pas trouvée. Par exemple :

<code class="sql">SELECT * FROM table WHERE LOCATE('text', column) > 0;</code>
Copier après la connexion

Cette requête recherche toutes les lignes où la valeur de la colonne contient la sous-chaîne « texte » n'importe où à l'intérieur.

Comparaison des performances

En général, l'opérateur LIKE est légèrement plus rapide que LOCATE. En effet, LIKE n'a pas besoin d'effectuer une comparaison supplémentaire pour vérifier si le résultat est supérieur à 0.

Pour démontrer cette différence de performances, considérez les points de référence suivants :

<code class="sql">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)</code>
Copier après la connexion

Comme les résultats du test montrent que LIKE est légèrement plus rapide que LOCATE lors de la recherche d'une sous-chaîne dans une chaîne. Cependant, la différence de performances est relativement faible pour la plupart des cas d'utilisation pratiques.

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
Derniers articles par auteur
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!