111 votes

Combien de temps les champs d'e-mail SQL doivent-ils être?

Je reconnais qu'une adresse e-mail peut être indéfiniment longue, donc toute taille que j'impose à mon champ d'adresse e-mail varchar sera arbitraire. Cependant, je me demandais quelle est la "norme"? Combien de temps faites-vous les gars? (même question pour le champ Nom ...)

update: Apparemment, la longueur maximale d'une adresse électronique est de 320 (<= 64 partie du nom, <= 255 domaine). Utilisez-vous cela?

209voto

ZZ Coder Points 36990

La limite théorique est vraiment long, mais avez-vous vraiment besoin de vous préoccuper de ces adresses e-Mail? Si quelqu'un ne peux pas me connecter avec un 100-char e-Mail, pensez-vous vraiment? Nous préfèrent en réalité ils ne le peuvent pas.

Quelques données statistiques peuvent jeter quelque lumière sur la question. Nous avons analysé une base de données avec plus de 10 millions d'adresses e-Mail. Ces adresses ne sont pas confirmées il y a donc des invalides. Voici quelques faits intéressants,

  1. La plus longue durée de validité d'un de 89 ans.
  2. Il y a des centaines longue jusqu'à la limite de notre colonne (255), mais ils sont apparemment faux, par inspection visuelle.
  3. Le pic de la distribution des tailles est 19.
  4. Il n'y a pas de longue queue. Tout tombe brusquement après 38.

Nous avons nettoyé la DB par jeter les objets de plus de 40. La bonne nouvelle, c'est que personne ne s'est plaint, mais la mauvaise nouvelle n'est pas le nombre d'enregistrements ai nettoyé.

22voto

MGOwen Points 678

Je n'ai jamais utilisé le maximum. L'adresse email suivante est seulement 94 caractères:

i.have.a.really.long.name.like.seetharam.krishnapillai@AReallyLongCompanyNameOfSomeKind.com.au

et je ne peux pas imaginer une personne effectivement en utilisant une adresse e-mail comme ça. Trop long à taper et difficile à retenir.

Si l'espace disque dans votre base de données est un problème, et vous n'avez pas l'esprit si un utilisateur d'un millier de a à utiliser une adresse e-mail secondaire à l'utilisation de votre site, rendez-vous pour 50 caractères: 123456789.123456789.123456789@1234567890123456.com

(Là encore, la plupart du temps, de l'espace disque n'est pas plus un problème, est-il?)

18voto

Eric Points 35647

J'ai par le passé fait juste 255 parce que c'est tellement enracinées standard de court mais pas trop court d'entrée. Que, et je suis une créature de l'habitude.

Cependant, depuis que le max est de 319, je ferais nvarchar(320) sur la colonne. Oublie pas l' @!

nvarchar ne pas utiliser l'espace que vous n'avez pas besoin, donc si vous n'avez que 20 caractères, adresse de courriel, il n'occupera de 20 octets. Ceci est en contraste à un nchar qui fera toujours son maximum (à droite-plaquettes de la valeur avec des espaces).

Je voudrais aussi utiliser nvarchar au lieu de varchar puisque c'est de l'Unicode. Compte tenu de la volatilité des adresses e-mail, c'est certainement le chemin à parcourir.

4voto

Jeff Ferland Points 9485

Si vous en voulez vraiment, créez un nom d'utilisateur varchar (60), domaine varchar (255). Ensuite, vous pouvez faire des statistiques ridicules sur l’utilisation de domaine légèrement plus rapides que de les faire en tant que champ unique. Si vous vous sentez vraiment à l'aise avec l'optimisation, votre serveur SMTP sera également en mesure d'envoyer des courriels avec moins de connexions / un meilleur traitement par lots.

4voto

Wez Furlong Points 1723

RFC 5321 (SMTP spec, obsoletes RFC2821) membres:

4.5.3.1.1. Local-part

La longueur totale maximale de l'utilisateur nom ou d'autres locaux-partie est de 64
octets.

4.5.3.1.2. Domaine

La longueur totale maximale d'un le nom de domaine ou de numéro de 255 octets.

Cela concerne juste localpart@domaine, pour un total de 320 ASCII (7 bits) caractères.

Si vous prévoyez de normaliser vos données, peut-être par le fractionnement de la localpart et le domaine dans des champs distincts, d'autres choses à garder à l'esprit:

  • Une technique connue sous le nom des pensions de retraite anticipée peut entraîner pleine longueur localparts pour le message généré automatiquement (peut ne pas être appropriée à votre cas d'utilisation)
  • les domaines sont insensibles à la casse; vous recommandons de le mettre en minuscule portion de domaine
  • localparts sont sensibles à la casse; user@domain.com et USER@domain.com techniquement différentes adresses par les spécifications, bien que la politique à l'domain.com peut - être de traiter les deux adresses comme équivalent. Il est préférable de limiter l'localpart cas de pliage à des domaines qui sont connus pour ce faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X