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 ?

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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-13 02:12:101006parcourir

How Can I Optimize Database Indexing for LIKE Queries with Leading Wildcards?

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!

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