MySql中varchar和char,如何选择合适的数据类型?

MySql中varchar和char,如何选择合适的数据类型?

背景学过MySQL的同学都知道MySQL中varchar和char是两种最主要的字符串类型,varchar是变长的类型,而char是固定长度。那关于如何选择类型就成为令人头疼的事,很多初学者为了保证业务兼容性强,存储字符串类型一律都是varchar类型。这是不妥的,需要根据varchar和char的特性来进行选择。

varchar和char数据类型的区别varchar类型用于存储可变长的字符串,是比较常见常用的字符串数据类型,在存储的字符串是变长时,varchar更加节约空间。由于varchar是变长的,在使用update的时候,可能使得行变得比原来更长,这就导致需要做额外的工作。如果一个行占用的空间增加,并且在页内没有多余的空间可与存储,这是innoDB的存储引擎需要分裂页来使行可以放进页内。

char类型是定长的。在存储数据时,MySQL会删除所有文末的空格,所以,即便你存储的是:'abc ',注意这个字符串末尾是有空格的,也会在存储时把这个空格删掉,这点需要注意。

适用的场景varchar适用的场景:

字符串列的最大长度比平均长度要大很多;字符串列的更新很少时,因为没有或很少有内存碎片问题;使用了UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储;char适用的场景:

列的长度为定值时适合适用,比如:MD5密文数据varchar和char的优缺点varchar的优点:变长的字符串类型,兼容性更好varchar的缺点:使用varchar可能会产生内存碎片varchar会额外需要1到2个字节存储长度信息update语句可能会导致页分裂char的优点:定长的字符串类型,减少内存碎片无需额外的内存空间去存储长度信息char的缺点:会删除列末尾的空格信息参考:

《高性能MySQL第3版》第四章

相关文章

dnf跨区表2023年最新完整版一览(最新高清跨区分布图)
你们在哪里?我在这里
bet体育365冻卡么

你们在哪里?我在这里

📅 07-23 👁️ 3159
3239硅胶电线35条介绍,你知道么?
28365365体育投注

3239硅胶电线35条介绍,你知道么?

📅 08-30 👁️ 1035
5字成語大全,五字成語帶解釋,5字成語查詢,五個字成語
智能锁录指纹步骤,智能指纹锁如何录指纹
365bet平台

智能锁录指纹步骤,智能指纹锁如何录指纹

📅 09-28 👁️ 7046
稻香村可以放多久
365bet平台

稻香村可以放多久

📅 12-16 👁️ 8079