使用CHAR over VARCHAR的任何好处?

zac*_*987 7 mysql

CHAR存储为固定长度字符串,VARCHAR存储为可变长度字符串.我可以使用VARCHAR存储固定长度的字符串,但为什么人们仍然想使用CHAR来存储固定长度的字符串?使用CHAR over VARCHAR有什么好处吗?如果没有任何好处,为什么mySQL数据库不会删除CHAR的选项?

Don*_*gon 8

  • VARCHAR

varchar存储可变长度的字符串.它可以比固定长度类型需要更少的存储空间,因为它只使用所需的空间.

varchar还使用1或2个额外字节来记录值的长度.例如,varchar(10)将使用最多11个字节的存储空间.varchar有助于提高性能,因为它节省了空间 但是因为行是可变长度的,所以当你更新它们时它们会增长,这会导致额外的工作.如果一行增长并且不再适合其原始位置,则该行为取决于存储引擎...

  • CHAR

char是固定长度的,mysql总是为指定的字符数分配足够的空间.存储CHAR值时,MySQL会删除任何尾随空格.根据需要使用空格填充值以进行比较.

如果要存储非常短的字符串,或者所有值的长度几乎相同,则char非常有用.例如,对于用户密码的MD5值,CHAR是一个不错的选择,它们的长度始终相同.

对于频繁更改的数据,char也优于VARCHAR,因为固定长度的行不容易出现碎片.