Maison  >  Article  >  base de données  >  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:02662parcourir

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 WHERE somefield LIKE '%value%'" sont inefficaces en raison du caractère générique principal empêchant l'utilisation de l'index.

Solution : indexation de tableaux de suffixes

Pour les chaînes relativement courtes, envisagez de 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 une augmentation de 3,5 fois

Considérations :

  • Déterminez comment diviser les « mots » pour gérer les termes avec trait d'union.
  • Le commerce Une distinction entre le fractionnement et l'efficacité de l'espace de stockage doit être prise en compte.
  • La suppression des traits d'union pour plus de cohérence dans les requêtes de recherche offre une flexibilité accrue.
  • 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