Как долго должны быть поля электронной почты SQL?

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

update:. По-видимому, максимальная длина для адреса электронной почты составляет 320 (< = 64 name part, <= 255 domain). Вы используете это?

Ответ 1

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

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

  • Самый длинный действующий - 89.
  • Существуют сотни более длинных до предела нашего столбца (255), но они, по-видимому, поддельны визуальным контролем.
  • Пик распределения длины равен 19.
  • Нет длинного хвоста. После 38 лет все резко падает.

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

Ответ 2

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

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

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

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

Ответ 3

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

[email protected]ngCompanyNameOfSomeKind.com.au

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

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

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

Ответ 4

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

Ответ 5

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

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

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

4.5.3.1.2. Домен

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

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

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

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

Ответ 7

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

Ответ 8

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

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

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