2009-08-19 7 views
67

Я признаю, что адрес электронной почты может в основном быть бесконечно длинным, поэтому любой размер, который я налагаю на свое поле адреса электронной почты varchar, будет произвольным. Однако мне было интересно, что такое «стандарт»? Как долго вы это делаете? (Такой же вопрос поле Name ...)Как долго должны быть поля электронной почты SQL?

обновление: Видимо максимальная длина для почтового адреса 320 (< = 64 часть имени, < = 255 домен). Вы используете это?

+1

Что RFC вы используете для этих значений? – IDisposable

+7

http: // stackoverflow.com/questions/386294/maximum-length-of-a-valid-email-id – Mala

ответ

128

Теоретический предел действительно длинный, но вам действительно нужно беспокоиться об этих длинных адресах электронной почты? Если кто-то не может войти в систему с электронной почтой 100-char, вам все равно? Мы на самом деле предпочитаем, чтобы они не могли.

Некоторые статистические данные могут пролить свет на проблему. Мы проанализировали базу данных с более чем 10 миллионами адресов электронной почты. Эти адреса не подтверждены, поэтому есть недопустимые. Вот некоторые интересные факты,

  1. Самые длинный действует один является 89.
  2. Есть сотни больше из них до предела нашей колонки (255), но они, по-видимому поддельный путем визуального осмотра.
  3. Пик распределения по длине находится на уровне 19.
  4. Существует не длинный хвост. Все резко падает после 38.

Мы очистили БД, выбросив все дольше, чем 40. Хорошей новостью является то, что никто не жаловался, но плохие новости не так много записей были очищены.

+23

Слава богу, для какой-то здравый смысл?. Все говорят «сделайте это 320!» пожалуйста, * пожалуйста * введите адрес электронной почты 320 символов, внимательно изучите его и спросите себя, сможет ли кто-либо из людей использовать такой адрес в вашем приложении. – MGOwen

+8

40? Угадайте, что вы тогда в клубе разработчиков, которые официально ненавидят Facebook-прокси-письма (a.k.a - [email protected]ymail.facebook.com). Я действительно проповедую размер 90 ... достаточно интересно, это хорошо сочетается с №1 в вашем списке. – kape123

+1

Зависит от того, на что предназначено электронное письмо. Если это для пользователей, я согласен, 40, может быть, 50 достаточно. Я просто сделал тест и нашел, что большинство составляют от 17 до 25. Очень редко более 40. –

15

В прошлом я только что сделал 255, потому что это так укоренившийся стандарт короткого, но не слишком короткого ввода. Это, и я - привычка.

Однако, так как максимум 319, я бы сделал nvarchar(320) на колонке. Должен помнить @!

nvarchar не будет использовать пространство, которое вам не нужно, поэтому, если у вас есть только 20-значный адрес электронной почты, он будет занимать до 20 байт. Это контрастирует с nchar, который будет всегда занимает максимум (он выравнивает значение с пробелами).

Я также использовал nvarchar вместо varchar, так как это Юникод. Учитывая волатильность адресов электронной почты, это определенно путь.

+2

255 + 64 = 319, 320 подсчитывает @ – Havenard

+0

Я использую phpMyAdmin для настройки баз данных, и я не вижу nvarchar в любом месте ... мне нужно установить это вручную с помощью инструкции SQL, или я просто пропущу ее где-нибудь? – Mala

+5

thisemailaddressisonly160charslong-[email protected]butuserswithnoemailaddressunder100charswillNEVERbeanissue.com – MGOwen

4

Если вы действительно любите его, сделайте имя пользователя varchar (60), домен varchar (255). Затем вы можете делать смешные статистические данные об использовании домена, которые немного быстрее, чем делать это как одно поле. Если вы настроитесь на оптимизацию, это также сделает ваш SMTP-сервер способным отправлять электронные письма с меньшим количеством соединений/более эффективной дозировкой.

+0

s/пистолет-хо/фанатичным/ – jameshfisher

+4

s/Гун -хо? (?: \ С * о)/посвященный/ –

0

Для электронной почты, независимо от спецификации, я практически всегда использую 512 (nvarchar). Имена и фамилии похожи.

Действительно, вам нужно посмотреть, насколько вы заботитесь о наличии дополнительных данных. Для меня, в основном, это не беспокойство, поэтому я ошибаюсь на консервативной стороне. Но если вы решили, используя логически и точные средства, что вам нужно сохранить пространство, сделайте это. Но в целом, быть консервативным с размерами поля, и жизнь должна быть хорошей.

Обратите внимание, что, возможно, не все почтовые клиенты поддерживают RFC, поэтому, независимо от того, что он говорит, вы можете столкнуться с различными вещами в дикой природе.

5

Следующая адрес электронной почты только 94 символов:

[email protected]ngCompanyNameOfSomeKind.com.au

бы вы на самом деле используйте такой адрес электронной почты? Был бы кто-нибудь? Конечно нет. Слишком долго печататься и слишком сложно запомнить.

Если дисковое пространство в вашей БД является проблемой, и вы не возражаете, если один пользователь на миллион должен использовать дополнительный адрес электронной почты, чтобы использовать ваш сайт, перейдите на 50 символов: [email protected] com

(Опять же, в большинстве случаев дисковое пространство больше не проблема, не так ли?)

3

RFC 5321 (текущий SMTP спецификация, RFC2821 устаревшая) гласит:

4.5.3.1.1. Локальная часть

Максимальная общая длина пользователя имя или другая локальная часть 64
октеты.

4.5.3.1.2. Домен

Максимальная общая длина доменного имени или номера 255 октетов.

Это относится только к локальному домену @ домена, в общей сложности 320 символов ASCII (7 бит).

Если вы планируете нормализовать данные, возможно, разделив локальную часть и домен в отдельные поля, дополнительные вещи, чтобы иметь в виду:

  • метод, известный как VERP может привести к полной длины localparts для автоматического (может не относиться к вашему случаю использования)
  • домены нечувствительны к регистру; рекомендовать понижающую область домена
  • локальные части чувствительны к регистру; [email protected] и [email protected] являются технически разными адресами для спецификаций, хотя политика на домене может быть состоять в том, чтобы рассматривать два адреса как эквивалентные. Лучше всего ограничивать локальную разбивку дел в доменах, которые, как известно, делают это.
1

Я использую VARCHAR (64) я не думаю, что кто-то может иметь более длинный по электронной почте

2

Согласно этому тексту, на основании соответствующих документов RFC, это не 320, а 254: http://www.eph.co.uk/resources/email-address-length-faq/

+2

. Ссылка больше не работает. Вот почему рекомендуется вставить соответствующую информацию. – Patrick

 Смежные вопросы

  • Нет связанных вопросов^_^