Maison >base de données >tutoriel mysql >L'indexation peut-elle améliorer les performances des requêtes LIKE multi-colonnes de MySQL ?

L'indexation peut-elle améliorer les performances des requêtes LIKE multi-colonnes de MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 02:32:10980parcourir

Can Indexing Improve MySQL's Multi-Column LIKE Query Performance?

Optimisation des requêtes LIKE multi-colonnes dans MySQL

Les requêtes SELECT lentes utilisant des clauses LIKE sur plusieurs colonnes peuvent constituer un goulot d'étranglement en termes de performances. Dans cet article, nous verrons si l'indexation peut améliorer la vitesse des requêtes et répondre aux problèmes liés à l'utilisation du disque et aux performances INSERT/DELETE.

Un index peut-il améliorer les performances LIKE ?

Malheureusement, les index sont inefficaces pour les requêtes LIKE dans MySQL car ils fonctionnent en indexant un nombre fixe de caractères en partant de la gauche. Avec LIKE '%text%', il peut y avoir une quantité arbitraire de texte avant la chaîne cible, empêchant l'utilisation de l'index.

Approches alternatives

Au lieu d'utiliser LIKE, pensez à FTS (Full Text Search). FTS est pris en charge pour les tables MyISAM et permet une recherche efficace de correspondances de chaînes partielles. Pour les tables non MyISAM, la mise en œuvre de votre propre système d'indexation à l'aide d'une table d'index distincte pour mapper les mots aux identifiants peut reproduire la fonctionnalité FTS.

Utilisation du disque et performances INSERT/DELETE

L'indexation FTS peut augmenter l'utilisation du disque. Cependant, l'impact sur les opérations INSERT/DELETE est minime. En effet, les insertions ajoutent uniquement de nouveaux mots à l'index, ce qui est effectué dans le cadre de la transaction, tandis que les suppressions marquent les mots pour une suppression ultérieure.

Mise à jour

MySQL 5.6 introduit la prise en charge FTS pour les tables InnoDB, offrant une option robuste pour améliorer les performances LIKE sur différents types de tables.

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