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

Comment puis-je optimiser les requêtes LIKE multicolonnes dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-06 21:40:18283parcourir

How Can I Optimize Multi-Column LIKE Queries in MySQL?

Amélioration des performances des requêtes LIKE multi-colonnes dans MySQL

Avec des requêtes fréquentes telles que SELECT x, y, z FROM table WHERE x LIKE '%text%' OU y LIKE '%text%' OU z LIKE '%text%', optimisation MySQL pour de telles opérations devient impératif. Alors que les index améliorent généralement l'efficacité des requêtes pour les colonnes indexées, le problème réside dans l'utilisation de caractères génériques (%text%) dans la clause LIKE.

Pour les colonnes textuelles, les index fonctionnent en indexant les caractères en commençant par la gauche. Cependant, les requêtes LIKE avec des caractères génériques de début et de fin (par exemple, %text%) empêchent l'utilisation de l'index puisque la position de départ du texte est inconnue.

Solutions alternatives

Plutôt plutôt que de vous fier aux index, envisagez les approches suivantes :

Texte intégral Recherche (FTS)

Si la table concernée utilise le moteur de stockage MyISAM, MySQL fournit FTS. Cette fonctionnalité facilite une recherche de texte efficace en indexant des mots entiers au lieu d'un nombre fixe de caractères.

Système d'indexation personnalisé

Pour les tables non MyISAM, créez un table d'index qui stocke les mots et leurs identifiants correspondants dans la table principale. Cela imite essentiellement la fonctionnalité FTS, permettant des recherches rapides sur les termes indexés.

Update

Les versions MySQL 5.6 et ultérieures étendent la prise en charge de FTS aux tables InnoDB, offrant ainsi une fonctionnalité efficace. alternative pour les deux moteurs de stockage.

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