4
  • 二进制
  • utf8_bin
  • utf8_unicode_ci
  • utf8_general_ci

哪一个最适合在 MySql 数据库中存储唯一的电子邮件?

注意:该电子邮件字段将用于用户登录。

4

1 回答 1

9

电子邮件地址是一段文本。因此,不要使用二进制,使用文本。

utf8似乎是一个不错的选择。我不确定电子邮件地址支持哪些字符,但可以预期将来允许使用的 unicode 字符会越来越多。特别是如果您在数据库的其他地方使用 utf8,则不必从一种编码切换到另一种编码,只需对所有内容都使用 utf8。

至于在 utf8_bin 、 utf8_unicode_ci 和 utf8_general_ci 之间进行选择区别只是排序规则。这意味着在比较字符串时会有所不同。

现在,您必须在允许的和正常的之间进行选择。通常,电子邮件地址不区分大小写,但它们可能区分大小写。

因此,如果您在电子邮件列上使用唯一索引,并且希望允许电子邮件地址仅在大小写上有所不同,则应使用utf8_bin,因为以 _ci 结尾的排序规则表示“不区分大小写”。

如果您使用唯一索引并希望避免电子邮件仅在大小写上有所不同,请使用utf8_unicode_ci

话虽如此,我使用utf8_unicode_ci。我希望数据库能够将 johndoe@email.com 和 JohnDoe@email.com 识别为同一个地址。它比允许地址具有相同字符和不同大小写的可能性要有用得多。

于 2012-06-25T19:48:40.547 回答