Comparaison des performances d'INSTR et LIKE pour la correspondance de chaînes MySQL
Dans MySQL, lors de la recherche d'une chaîne dans une colonne, deux méthodes courantes sont INSTR et LIKE. Lequel est le plus rapide et le plus efficace ?
INSTR vs LIKE
INSTR(columnname, 'mystring') > 0 renvoie vrai si 'mystring' est trouvé dans le nom de la colonne, tandis que le nom de la colonne LIKE '%mystring%' renvoie vrai si 'mystring' est trouvé n'importe où dans le nom de la colonne. INSTR et LIKE sont tous deux pris en charge pour les colonnes de chaînes de types « varchar », « texte », « blob », etc.
Tests de performances
Dans un test, en comptant les occurrences de « recherche » dans une table de plus de 40 000 lignes, INSTR et LIKE exécutées de manière identique, prenant environ 5,54 secondes. Cependant, lorsque vous utilisiez LIKE avec uniquement un suffixe générique, tel que « search% », la requête était nettement plus rapide, ne prenant que 3,88 secondes.
Recherche en texte intégral
Bien que cela ne soit pas spécifiquement mentionné dans la question d'origine, il convient de noter que les recherches FULLTEXT sont généralement plus rapides pour les requêtes textuelles. Cependant, ils nécessitent l'utilisation d'index spécialisés et ne conviennent pas toujours à tous les scénarios.
Conclusion
Pour les analyses de table complète, INSTR et LIKE avec à la fois le préfixe et les caractères génériques de suffixe fonctionnent de la même manière. Cependant, lors de la recherche d'une chaîne au début d'une colonne de texte, LIKE avec un suffixe générique devient beaucoup plus efficace. Dans les cas où les performances sont critiques, l'utilisation de la recherche en texte intégral peut fournir les meilleurs résultats.
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!