神木自适应网站开发,郑州上街区网站建设公司,二级域名免费发放,网站设计与编辑原文网址#xff1a;http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者#xff1a; 字体#xff1a;[增加 减小] 类型#xff1a;转载在mysql教程中char与varchar的区别呢#xff0c;都是用来存储字符串的#xff0c;只是他们的保存方式不一样…原文网址http://www.jb51.net/article/23575.htm mysql中char与varchar的区别分析 作者 字体[增加 减小] 类型转载 在mysql教程中char与varchar的区别呢都是用来存储字符串的只是他们的保存方式不一样罢了char有固定的长度而varchar属于可变长的字符类型。 char与varchar的区别 char (13)长度固定 如www.jb51.net 存储需要空间 12个字符 varchar(13) 可变长 如www.jb51.net 需要存储空间 13字符, 从上面可以看得出来char 长度是固定的不管你存储的数据是多少他都会都固定的长度。而varchar则处可变长度但他要在总长度上加1字符这个用来存储位置。所以实际应用中用户可以根据自己的数据类型来做。 再看看char,与varchar在速度上的区别吧。 复制代码 代码如下: mysalcreate tabe ab(v varchar(4),c char(4)); query ok ,0 rows affected(0.02 sec) mysqlinsert into abc values(ab ,ab ) query ok ,1 row affected(0.00 sec); mysql-select concat(v ,) ,concat(c ,) form abc ab | ab 1rows in set (0.00 sec) 从上面可以看出来由于某种原因char 固定长度所以在处理速度上要比varchar快速很多但是对费存储空间所以对存储不大但在速度上有要求的可以使用char类型反之可以用varchar类型来实例。 注明 在用char字符类型时内容后面有空间时必须作相关处理要不就会把空格自动删除。 建意: myisam 存储引擎 建议使用固定长度数据列代替可变长度的数据列。 memory存储引擎 目前都使用固定数据行存储因此无论使用char varchar列都没关系 innodb 存储引擎 建意使用varchar 类型 以下是其它网友的补充 char是一种固定长度的类型varchar则是一种可变长度的类型 char(M)类型的数据列里每个值都占用M个字节如果某个长度小于MMySQL就会在它的右边用空格字符补足在检索操作中那些填补出来的空 格字符将被去掉在varchar(M)类型的数据列里每个值只占用刚好够用的字节再加上一个用来记录其长度的字节即总长度为L1字节 在MySQL中用来判断是否需要进行对据列类型转换的规则 、在一个数据表里如果每一个数据列的长度都是固定的那么每一个数据行的长度也将是固定的 、只要数据表里有一个数据列的长度的可变的那么各数据行的长度都是可变的 、如果某个数据表里的数据行的长度是可变的那么为了节约存储空间MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型 例外长度小于个字符的char数据列不会被转换为varchar类型 对于MyISAM表尽量使用Char对于那些经常需要修改而容易形成碎片的myisam和isam数据表就更是如此它的缺点就是占用磁盘空间 对于InnoDB表因为它的数据行内部存储格式对固定长度的数据行和可变长度的数据行不加区分所有数据行共用一个表头部分这个标头部分存放着指向 各有关数据列的指针所以使用char类型不见得会比使用varchar类型好。事实上因为char类型通常要比varchar类型占用更多的空间 所以从减少空间占用量和减少磁盘i/o的角度使用varchar类型反而更有利. 文章2 字符应该是最常见的一种了但似乎各个数据库都有所不同比如oracle中就有啥varchar2之类。不过mysql似乎最多的还是集中在char和varchar上。 说 说区别。char是固定长度的而varchar会根据具体的长度来使用存储空间。比如char(255)和varchar(255)在存储字符 串hello world的时候char会用一块255的空间放那个11个字符而varchar就不会用255个他先计算长度后只用11个再加上计算的到字符串 长度信息一般1-2个byte来这样varchar在存储不确定长度的时候会大大减少存储空间。 如此看来varchar比char聪明多了那char有用武之地吗还是很不少优势的。 一存储很短的信息比如门牌号码101201……这样很短的信息应该用char因为varchar还要占个byte用于存储信息长度本来打算节约存储的现在得不偿失。 二固定长度的。比如使用uuid作为主键那用char应该更合适。因为他固定长度varchar动态根据长度的特性就消失了而且还要占个长度信息。 三十分频繁改变的column。因为varchar每次存储都要有额外的计算得到长度等工作如果一个非常频繁改变的那就要有很多的精力用于计算而这些对于char来说是不需要的。 还 有一个关于varchar的问题是varchar他既然可以自动适应存储空间那我varchar(8)和varchar(255)存储应该都是一样 的那每次表设计的时候往大的方向去好了免得以后不够用麻烦。这个思路对吗答案是否定的。mysql会把表信息放到内存中查询第一次后就缓存住 了linux下很明显但windows下似乎没有不知道为啥这时内存的申请是按照固定长度来的如果varchar很大就会有问题。所以还是应 该按需索取。 总结仔细看DZ的数据表定长的字段基本还都是用char.... 597转载于:https://www.cnblogs.com/wkhuahuo/p/4284352.html