Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment accélérer les requêtes SELECT .. LIKE dans MySQL sur plusieurs colonnes ?

Un index n'accélérerait pas la requête, car pour les colonnes textuelles, les index fonctionnent en indexant N caractères à partir de la gauche. Lorsque vous faites LIKE '%text%', il ne peut pas utiliser l'index car il peut y avoir un nombre variable de caractères avant le texte.

Ce que vous devriez faire, c'est ne pas du tout utiliser une requête comme celle-là. Au lieu de cela, vous devriez utiliser quelque chose comme FTS (Full Text Search) que MySQL prend en charge pour les tables MyISAM. Il est également assez facile de créer vous-même un tel système d'indexation pour les tables non-MyISAM, vous avez juste besoin d'une table d'index séparée où vous stockez les mots et leurs identifiants pertinents dans la table réelle.

Mettre à jour

Recherche plein texte disponible pour les tables InnoDB avec MySQL 5.6+.