Optimisation des requêtes MySQL LIKE dans InnoDB
Lors de l'interrogation des tables InnoDB à l'aide de l'opérateur LIKE avec un caractère générique de fin ('%...') , il est important de comprendre ses limites d'indexation.
Comprendre les limitations de l'index
Les index dans InnoDB sont généralement construits à partir du début de la chaîne. Alors que les requêtes telles que LIKE 'whatever%' peuvent utiliser ces index basés sur le démarrage pour des recherches efficaces, les requêtes LIKE '%whatever%' ne le peuvent pas.
En effet, le caractère générique de fin supprime l'ancre au début du terme de recherche, le rendant « flottant » dans la chaîne. En conséquence, l'ensemble du champ doit être recherché, ce qui rend les index basés sur le début inefficaces.
Solution : Utiliser des index de texte intégral
Pour les recherches « flottantes » comme LIKE '% ... requêtes, les index de texte intégral sont recommandés. Les index fulltext sont optimisés pour ce type d'utilisation, permettant des recherches efficaces quelle que soit la position du caractère générique dans la chaîne.
InnoDB et index fulltext
Historiquement, InnoDB ne le faisait pas prend en charge les index de texte intégral. Cependant, depuis la version 5.6.4, InnoDB prend entièrement en charge l'indexation de texte intégral. Cela vous permet d'utiliser à la fois les avantages de transaction et de cohérence d'InnoDB tout en bénéficiant d'une recherche de texte intégral efficace.
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!