Maison > base de données > tutoriel mysql > SQL `LIKE` vs `=` : quand l'un est-il plus rapide que l'autre ?

SQL `LIKE` vs `=` : quand l'un est-il plus rapide que l'autre ?

Mary-Kate Olsen
Libérer: 2025-01-04 16:58:40
original
192 Les gens l'ont consulté

SQL `LIKE` vs `=`: When Is One Faster Than the Other?

Performances SQL 'like' vs '=' : analyse contextuelle

La question de savoir si 'like' ou '=' fonctionne mieux lorsque l'utilisation de caractères génériques SQL a été abordée dans le passé, mais la sagesse conventionnelle est que '=' est plus rapide. Cependant, il est important de prendre en compte le contexte spécifique de la requête.

Dans le scénario où une colonne contient un nombre limité d'identifiants varchar fixes et codés en dur, et où la tâche consiste à sélectionner toutes les lignes correspondant à l'un d'entre eux, il pourrait sembler que « j’aime » aurait un avantage. 'Like' n'a besoin que de tester quelques caractères initiaux pour une correspondance, tandis que '=' doit comparer la chaîne entière.

Cependant, comme expliqué dans un article de John Nelson (archivé sur https://web.archive.org/web/20150209022016/http://myitforum.com/cs2/blogs/jnelson/archive/2007/11/16/108354.aspx), les règles d'utilisation des index avec 'like' sont nuancés :

  • Si le filtre utilise '=' sur un champ indexé, un INDEX/CLUSTERED INDEX SEEK est probablement utilisé.
  • Si 'like' est utilisé sans caractères génériques, l'utilisation de l'index est similaire au cas de '='.
  • Si 'like' est utilisé avec un caractère générique au début, un INDEX SCAN sur une plage complète ou partielle de l'index peut être utilisé.
  • Si 'like' est utilisé avec une chaîne d'abord et des caractères génériques après, une RECHERCHE D'INDEX peut être utilisée pour trouver les lignes correspondantes, qui sont ensuite vérifiées pour une correspondance exacte.

Par conséquent, les performances de « j'aime » par rapport à « = » dépendent de le contexte de requête spécifique, l'emplacement des caractères génériques et la présence d'index. Dans le cas d'un nombre limité d'identifiants codés en dur, 'like' peut en effet fonctionner plus rapidement que '=' avec une comparaison de chaînes complètes. Cependant, il est important d'évaluer le cas d'utilisation spécifique et d'envisager l'optimisation de l'index pour déterminer l'approche optimale.

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