gpt4 book ai didi

mysql - 使用拉丁字符集在 MySQL 中存储电子邮件和域名

转载 作者:行者123 更新时间:2023-11-29 06:55:51 25 4
gpt4 key购买 nike

stackoverflow 上的一般建议是在 MySQL 中的所有位置使用 utf8 或 utf8mb4,即使对于仅包含拉丁字符的字段也是如此。

澄清一下,对于仅包含拉丁字符的列,将使用 utf8mb4:

  1. ...导致更大的索引和更高的内存使用量?
  2. ...使用列类型 varchar(100) 或 char(100) 时会占用更多存储空间吗?
  3. ...允许在列类型 varchar(100) 或 char(100) 中存储超过 100 个字符?

最佳答案

现在是 2017 年。对每个通用“字符串”字段使用 utf8mb4VARCHAR(255) ,除非您有非常令人信服的理由要偏离这一点。即使是纯粹的英语使用者也喜欢在“́\_(ツ)_/́”和“ᕕ(ᐛ)ᕗ”甚至😎等情况下使用古怪的非拉丁字符。

电子邮件地址的域组件和 @ 之前的本地部分中都可以包含非 ASCII 字符。无论这些事情有什么规则,似乎都被一一抛弃了,所以所有的赌注都取决于 future 。希望 @ 保留下来,这是我唯一指望的。

除非您的系统在内存中处理数十亿个电子邮件地址,否则 VARCHAR 的存储成本在很大程度上是无关紧要的。请记住,对于 50 个字符的字符串,VARCHAR(100)VARCHAR(255) 占用的空间量完全相同。 100 长度字段的唯一作用是,当某人的电子邮件地址“太长”并被任意修剪时,会让人感到不安。

此外,VARCHAR 测量的是字符 长度,而不是字节,这种差异仅在涉及多字节字符时才相关。 bob@example.com 在 Latin-1、UTF-8 和 UTF8MB4 中占用相同的空间量。

不要将 CHAR 用于可变长度字符字段。 20世纪80年代已经死了。放手吧。

关于mysql - 使用拉丁字符集在 MySQL 中存储电子邮件和域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45687173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com