Maison >base de données >tutoriel mysql >Comment optimiser les requêtes MySQL avec des clauses LIKE à l'aide d'index composites ?
Identification de la stratégie d'indexation optimale pour les requêtes contenant des clauses LIKE
Lors de l'optimisation des requêtes de base de données impliquant des clauses LIKE, l'efficacité des index devient quelque peu incertaine. Cependant, comprendre les limites et les stratégies d'indexation optimales peut améliorer considérablement les performances des requêtes.
Considérez la requête suivante :
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
Déterminer l'index le plus approprié pour cette requête nécessite de prendre en compte la nature des clauses LIKE. . MySQL utilise les index B-tree pour les comparaisons de colonnes à l'aide d'opérateurs tels que = et >. Bien que les index B-tree puissent améliorer les comparaisons LIKE lorsque l'argument LIKE est une chaîne constante sans caractères génériques, la présence de caractères génériques limite leur efficacité.
Dans la requête ci-dessus, aucune des expressions LIKE ne commence par des caractères génériques. Cela signifie qu'un index composite sur les colonnes usage_guidance et name serait le plus avantageux. En ordonnant l'index de cette manière, la requête peut tirer parti de l'index pour les deux comparaisons LIKE.
Voici une commande SQL pour créer l'index composite :
CREATE INDEX idx_tags ON tags(usage_guidance, name);
Dans des cas comme Dans ce cas, où plusieurs facteurs affectent les performances des requêtes, l'analyse de la structure de la table, des exemples de données et du résultat attendu peut souvent révéler des opportunités d'optimisation 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!