Maison  >  Article  >  base de données  >  Comment ajouter un index efficace à une chaîne dans MySQL

Comment ajouter un index efficace à une chaîne dans MySQL

王林
王林avant
2023-05-28 21:04:30886parcourir

Exigences

Dans les besoins quotidiens, il est très courant que les utilisateurs se connectent à un système en utilisant leur numéro de téléphone mobile ou leur adresse e-mail. Alors, comment établir un index raisonnable sur des champs comme le numéro de téléphone mobile ou l'adresse e-mail ?

Index de préfixe

L'index de préfixe utilise une partie de la valeur d'un champ comme index. Si vous ne spécifiez pas la longueur du champ d'index lors de la création d'un index dans MySQL, la chaîne entière sera utilisée pour construire l'index.

语句1:
alter table test add index idx(email);
语句2:
alter table test add index idx(email(8));

Pour l'instruction 1, l'index créé contiendra la valeur entière de la chaîne de courrier électronique dans chaque enregistrement.

Pour l'instruction 2, l'index créé stocke les 8 premiers octets du champ email dans chaque enregistrement.

L'avantage de l'utilisation de l'index de préfixe est évident, c'est-à-dire que l'index occupera moins d'espace, l'arbre d'index entier sera plus compact et la hauteur de l'arbre sera relativement inférieure.

Mais en conséquence, la discrimination d'index deviendra plus faible, ce qui peut entraîner une augmentation du nombre de lignes d'analyse d'index.

Lorsque nous créons un index, la distinction de l'index est un indicateur très important. Plus la résolution est élevée, moins il y a de valeurs en double et plus l'analyse est efficace.

Planifier correctement la longueur de l'index de préfixe peut non seulement économiser de l'espace, mais également éviter d'avoir à analyser des lignes supplémentaires. Il est recommandé de juger et de tester la longueur spécifique à utiliser en fonction de nos scénarios commerciaux réels.

Ordre inverse + index de préfixe

Ordre inverse + index de préfixe a un scénario d'utilisation classique, qui consiste à indexer les numéros d'identification.

Supposons que nous souhaitions désormais conserver les informations d'identité de toutes les personnes vivant dans une ville ou un comté, où les requêtes par numéro d'identification sont un scénario très fréquent.

Le numéro d'identification comporte 15 ou 18 chiffres au total. De manière générale, les 6 premiers chiffres du numéro d'identification des personnes dans la même ville ou comté sont généralement les mêmes. Si vous indexez directement le numéro d'identification dans son intégralité, cela sera gaspillé. espace, ce qui entraîne une dégradation des performances. Si vous utilisez un index de préfixe direct, les 6 premiers bits ont très peu (voire pas) de discrimination, puisque la plupart des valeurs ont les mêmes 6 premiers bits.

À l'heure actuelle, les avantages de l'utilisation de l'ordre inverse + index de préfixe sont reflétés.

Nous stockons d'abord la carte d'identité dans l'ordre inverse, ou créons un champ de numéro de carte d'identité redondant dans l'ordre inverse, puis prenons les 6 premiers chiffres comme index de préfixe.

La distinction entre les 6 derniers chiffres de la carte d'identité nous suffit en principe. Si vous pensez toujours que la vitesse d'interrogation n'est pas suffisante, ce n'est pas un problème de prendre les 8 premiers chiffres.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer