Использовать адрес электронной почты в качестве первичного ключа? - PullRequest
220 голосов
/ 27 сентября 2010

Является ли адрес электронной почты плохим кандидатом на основной адрес по сравнению с автоматически увеличивающимися числами?

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

Является ли действительной причиной не использовать электронную почту в качестве первичного ключа?

Мы используем PostgreSQL.

Ответы [ 25 ]

1 голос
/ 24 декабря 2015

первичный ключ должен быть выбран статический атрибут. Поскольку адреса электронной почты не являются статичными и могут использоваться несколькими кандидатами, поэтому не рекомендуется использовать их в качестве первичного ключа. Более того, адреса электронной почты - это строки, обычно определенной длины, которые могут быть больше уникального идентификатора, который мы хотели бы использовать [len (email_address)> len (unique_id)], так что это потребовало бы больше места и, что еще хуже, они хранятся несколько раз как внешний ключ , И, следовательно, это приведет к снижению производительности.

0 голосов
/ 27 сентября 2010

Зависит от таблицы. Если строки в вашей таблице представляют адреса электронной почты, то лучшим идентификатором будет электронная почта. Если нет, то электронная почта не является хорошим идентификатором.

0 голосов
/ 10 ноября 2017

не используйте адрес электронной почты в качестве первичного ключа, сохраняйте электронную почту как уникальный, но не используйте его в качестве первичного ключа, используйте идентификатор пользователя или имя пользователя в качестве первичного ключа

0 голосов
/ 28 сентября 2010

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

0 голосов
/ 04 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...