Maison >base de données >tutoriel mysql >Comment puis-je optimiser l'indexation de la base de données pour les requêtes LIKE avec les principaux caractères génériques ?
Stratégies d'indexation pour les requêtes LIKE
Lorsque l'on traite des requêtes LIKE, il devient crucial de comprendre les limites des index B-tree. Bien que les index B-tree excellent dans l'accélération des comparaisons à l'aide d'opérateurs tels que =, > et BETWEEN, ils sont confrontés à des difficultés avec les requêtes LIKE qui commencent par des caractères génériques. Dans de tels scénarios, les avantages potentiels de l'indexation diminuent.
Considérant votre requête spécifique :
SELECT name, usage_guidance, total_used_num FROM tags WHERE ( name LIKE CONCAT('%', ?, '%') OR usage_guidance LIKE CONCAT(?, '%') ) AND name NOT IN ($in) ORDER BY name LIKE CONCAT('%', ?, '%') DESC, name ASC LIMIT 6
Les deux conditions LIKE commencent par des caractères génériques, ce qui rend l'utilisation des index B-tree peu pratique. Cependant, il y a une lueur d'espoir avec la deuxième condition LIKE, qui ne commence pas par un caractère générique. Pour améliorer les performances des requêtes, envisagez de créer un index composite sur les colonnes usage_guidance et name. Cela permet des correspondances partielles sur usage_guidance et un classement plus rapide basé sur le nom.
CREATE INDEX idx_tags ON tags (usage_guidance, name);
Bien que cette stratégie d'indexation ne résolve pas comme par magie tous les problèmes de performances, elle résout en partie les limites des requêtes LIKE et devrait améliorer sensiblement la vitesse des requêtes. . Si vous rencontrez des difficultés supplémentaires avec cette requête, fournir à la structure de la table des exemples de données et le résultat attendu pourrait conduire à des optimisations supplémentaires.
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!