Maison >base de données >tutoriel mysql >Comment puis-je accélérer les requêtes LIKE multicolonnes dans MySQL ?

Comment puis-je accélérer les requêtes LIKE multicolonnes dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 00:37:10943parcourir

How Can I Speed Up Multi-Column LIKE Queries in MySQL?

Accélération des requêtes LIKE sur plusieurs colonnes dans MySQL

Lorsque vous êtes confronté à des requêtes SELECT ... LIKE '%text%' fréquentes sur un table MySQL multicolonne, il est naturel de se demander si l'indexation peut améliorer les performances. Malheureusement, les index qui fonctionnent en référençant des caractères commençant à gauche ne peuvent pas aider avec les requêtes LIKE '%text%', car le caractère générique permet de faire varier les caractères précédant le texte spécifié.

Au lieu de s'appuyer sur des index, MySQL recommande d'utiliser Recherche en texte intégral (FTS) pour les tables MyISAM. FTS indexe les mots dans les colonnes de texte, permettant des recherches efficaces même lorsque le texte cible apparaît n'importe où dans la colonne.

Options alternatives pour les tables non MyISAM

Pour les tables qui sont pas basé sur MyISAM, vous pouvez implémenter un système d'indexation personnalisé. Créez une table d'index qui stocke les mots avec leurs identifiants correspondants dans la table réelle. Cette approche permet une recherche efficace en décomposant la requête LIKE '%text%' en recherches de mots individuels.

Impact sur l'utilisation et les performances du disque

Les index FTS consomment davantage espace disque par rapport aux index traditionnels. Cependant, l'insertion et la suppression d'enregistrements n'affectent pas de manière significative les performances de l'index FTS.

Mise à jour : recherche en texte intégral pour les tables InnoDB

À partir de MySQL 5.6, texte intégral la fonctionnalité de recherche est également disponible pour les tables InnoDB, fournissant une solution de recherche hautes performances qui correspond aux exigences de votre requête.

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