MySQL中CHAR和VARCHAR的区别及应用场景

[ MySQL ] 2020-05-05 13:09:59 杨歆 500

VARCHAR和CHAR是两种最主要的字符串类型。它们的存储方式和数据检索方式都不一样。

VARCHAR和CHAR的数据检索效率:CHAR > VARCHAR

VARCHAR类型

VARCHAR类型用于存储可变长字符串,是最常见的字符串数据类型。它比定长类型更节省空间,因为它仅使用必要的空间。

VARCHAR类型的实际长度是它的值的实际长度+1,这一个字节用于保存实际使用了多大的长度。VARCHAR节省了存储空间,所以对性能也有帮助。

但是,由于行是变长的,在UPDATE时可能使行变得比原来更长,这就导致需要做额外的工作。

CHAR类型

CHAR类型用于存储定长字符串,CHAR字段上的索引效率级高。比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。CHAR值会根据需要采用空格进行填充以方便比较。

应用场景

VARCHAR类型适用于文章标题、商品名称、图片路径等字符串最大长度大于平均长度的列。

CHAR类型适用于存储密码的MD5值、手机号码、身份证号码、订单号等长度相对固定的列。

总结

该字段数据集的平均长度与最大长度是否相差很小,若相差很小优先考虑CHAR类型,反之,考虑VARCHAR类型。

若字段存储的是MD5后的哈希值,或一些定长的值,优先选取CHAR类型。

若字段经常需要更新,则优先考虑CHAR类型,由于CHAR类型为定长,因此不容易产生碎片。

对于字段值存储很小的信息,优先选取CHAR类型,因为VARCHAR类型会占用额外的字节保存字符串长度信息。

当能够选取CHAR类型的时候,或者说空间消耗相对并不是影响因素的重点时,尽量选取CHAR类型,因为在其他方面,CHAR类型都有着或多或少的优势。而当空间消耗成为了很大的影响因素以后,则考虑使用VARCHAR类型。


支付宝支付
打赏
微信支付

联系我吧

有些人是会淡出你的生活的,有些人刻意不再联系,是因为你知道ta不需要你,或者从一开始就不是同一个初衷在一起度过,不主动联系很久也不见一次面,所有的感情也罢,都会败给时间和距离。因为时间是最无情,给你后悔的时刻却不会给你改过重来的机会。

位置

成都市 四川省 中国

联系电话

028-6406-0000

邮箱

y139w@163.com

企鹅

27572048

网址

https://www.weania.com