Maison >base de données >tutoriel mysql >## Comment puis-je rendre les requêtes MySQL LIKE \'%string%\' efficaces dans InnoDB ?
Optimisation des requêtes MySQL pour LIKE '%string%' dans InnoDB
Description du problème
Lors de l'utilisation de la clause LIKE '%string%' dans une requête sur une table InnoDB, on observe que l'index sur la colonne 'keywords' devient inefficace, entraînant des analyses complètes de la table.
La solution
Les index InnoDB sont optimisés pour les comparaisons de chaînes qui commencent au début de la colonne indexée. Cependant, la clause LIKE '%string%' permet au terme de recherche d'apparaître n'importe où dans la colonne. Ce type de requête ne peut pas utiliser d'index basés sur le début car le terme de recherche n'est pas ancré au début de la chaîne.
L'index fulltext comme solution optimale
Pour optimiser pour les requêtes qui impliquent des termes de recherche flottants dans InnoDB, des index de texte intégral doivent être utilisés. Les index de texte intégral sont spécialement conçus pour gérer de telles requêtes, car ils permettent une correspondance de chaînes flexible.
La mise à niveau vers MySQL 5.6.4 ou version ultérieure
La prise en charge d'InnoDB pour les index de texte intégral a été introduit dans MySQL 5.6.4. Si votre version de MySQL est inférieure à 5.6.4, il est recommandé de procéder à une mise à niveau pour utiliser cette fonctionnalité. En mettant à niveau vers MySQL 5.6.4 ou version ultérieure, vous pourrez utiliser des index de texte intégral pour optimiser les requêtes LIKE '%string%' dans InnoDB.
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!