mysql中char和varchar区别

char是一种固定长度的类型,无论储存的数据有多少都会固定长度,如果插入的长度小于定义长度,则可以用空格进行填充。而varchar是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长。

使用层面

varchar就是存进去是什么,取出来就是什么。

char的话存进去的字符串尾部空格会丢失。

存储空间

一般来说,varchar比char更节省空间。

  • varchar类型用于存储可变长度字符串,实际存储的空间=字符串内容+字符串长度(需要使用1或2个额外字节记录字符串的长度)
  • char的话是固定长度,一旦你定义了字段类型char(10),哪怕你只是存了3个字符,那么也是用了10个字符长度的存储空间(其中7个为空字符/无效字符)

存储结构

char根据定义的字符串长度分配了足够的空间。 

varchar在更新长度时(比原来长度更长),有可能导致分裂页。导致出现碎片问题。

根据存储结构的特性,也导致了更新数据时,char的性能比varchar要更好。

char查找效率会很高,varchar查找效率会更低。

总结

适合varchar的场景:

  • 字符串的最大长度比平均长度大很多
  • 列的更新很少,所以碎片不是问题

适合char的场景:

  • 存储很短的字符串或者所有值都接近同一个长度,例如md5、ip等信息
  • 经常变更的数据,不容易产生碎片
posted @ 2022-05-30 11:42  李小菜丶  阅读(145)  评论(0编辑  收藏  举报