Maison >base de données >tutoriel mysql >Comment l'indexation de tableaux de suffixes peut-elle améliorer les requêtes MySQL « LIKE » avec des caractères génériques ?

Comment l'indexation de tableaux de suffixes peut-elle améliorer les requêtes MySQL « LIKE » avec des caractères génériques ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-13 11:05:02731parcourir

How Can Suffix Array Indexing Enhance MySQL

Amélioration de l'efficacité de la recherche MySQL avec "LIKE" et les caractères génériques

Problème : Requêtes telles que "SELECT * FROM sometable OÙ certains champs LIKE '%value%'" sont inefficaces en raison du principal caractère générique empêchant l'index utilisation.

Solution : indexation de tableaux de suffixes

Pour les chaînes relativement courtes, pensez à stocker tous les suffixes possibles de chaque mot dans la base de données. Par exemple, pour le mot « valeur », nous stockerions :

value
alue
lue
ue
e

En stockant les suffixes, nous éliminons le caractère générique de début, permettant ainsi l'utilisation de l'index pour des recherches rapides de sous-chaînes.

Coût de stockage :

L'espace de stockage requis pour stocker les suffixes augmente quadratiquement avec la longueur de la chaîne. Par exemple :

  • Un mot de 3 lettres nécessite une augmentation de 1,5 fois
  • Un mot de 5 lettres nécessite une augmentation de 2,5 fois
  • Un mot de 7 lettres nécessite un 3,5 fois augmenter

Considérations :

  • Déterminer comment diviser les « mots » pour gérer les termes avec trait d'union.
  • Le compromis entre le fractionnement et l'efficacité de l'espace de stockage doivent être pris en compte.
  • La suppression des traits d'union pour plus de cohérence dans les requêtes de recherche permet d'augmenter flexibilité.
  • Des méthodes avancées de stockage de tableaux de suffixes avec une surcharge réduite peuvent exister.

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