数据库MySql设计 - utf8字段的varchar长度:: 1.密码2.用户名3.email

Yos*_*sef 4 mysql database database-design field

大多数时候我定义varchar(255)长度auto.

但是现在我想为utf8字段定义多少varchar长度:

  1. 密码

  2. 用户名

  3. 电子邮件

如果此字段的定义应小于varchar 255,那么它将提高多少性能?

谢谢

Thi*_*ter 6

如果使用SHA1哈希,'password'应为char(40).如果您确定散列的情况始终相同,则可能具有二进制排序规则.这为您提供了更好的性能.如果不是,请使用latin1,但不要使用utf8.

'电子邮件'...使用255,您无法知道某人的电子邮件地址有多长.

对于用户名,我只使用你的最大用户名长度.20或30可能会很好.

如果在字符字段上有索引(特别是如果它是PK的一部分),请非常小心地选择长度,因为索引越长越长可能会大大降低性能(并增加内存使用量).

此外,如果在索引中使用UTF8字段,则必须注意,MySQL保留的字节数是字段实际字符长度的3倍,为最坏情况做准备(UTF8可能会将某些字符存储在3个字节上).这也可能导致内存不足.