Maison  >  Article  >  base de données  >  ## Comment puis-je rendre les requêtes MySQL LIKE \'%string%\' efficaces dans InnoDB ?

## Comment puis-je rendre les requêtes MySQL LIKE \'%string%\' efficaces dans InnoDB ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 07:23:29721parcourir

## How Can I Make MySQL LIKE '%string%' Queries Efficient in 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!

Déclaration:
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