char和varchar的区别

char(13)的长度是固定的,比如存储需要12个字符空间。

varchar(13)长度可变的如需要存储空间13个字符,

从以上可以看出,char的长度是固定的,而无论多少数据你的商店,他将固定长度。和varchar是可变长度的,但他想加1个字的总长度,这是用来存放位置。所以在实际应用程序,用户可以根据自己的数据类型做。

看看char和varchar的速度之间的差异。
复制代码代码如下所示:
一>创建管AB(V varchar(4),C char(4));
查询OK,0行受影响(0.02秒)
MySQL >插入值('ab ABC,'ab)
查询OK,1行受影响(0秒);
MySQL ->选择(V,连接,连接(C + +),ABC的形式)
AB +公司+ |
1rows设定(0秒)

从以上可以看出,由于某种原因,字符的固定长度,使处理速度比varchar快很多,但成本的存储空间,所以存储量小,但速度要求可以使用char类型,并可与VARCHAR类型的例子。

注:

当char字符类型的内容后面有空格时,必须进行相关的处理,否则空间将自动删除。

建筑的意义:

MyISAM存储引擎建议使用固定长度的数据列,而不是一个可变长度的数据列。
内存存储引擎目前使用的是固定的数据行存储,因此无论使用char varchar列,
InnoDB存储引擎使用varchar类型


以下是对其他互联网用户的补充


焦炭是一种固定的长度,和VARCHAR是一种可变长度。
char(m)数据类型列,每个值占用m字节,如果长度小于m,MySQL将在其后面使用空格字符。(在检索操作的填充空格字符将被删除)在VARCHAR(M)数据类型的列,每个值只够字节加上一个记录的字节长度(即总长度为L + 1字节)。

在MySQL中,它用于确定是否需要转换所列类型的规则。

1。在数据表中,如果每个数据列的长度是固定的,则每一行数据的长度将被固定。
2。只要数据表中的数据列有可变长度,每个数据行的长度都是可变的。
3,如果数据表中数据行的长度是可变的,那么为了节省存储空间,MySQL将将数据表中的固定长度数据列转换为相应的可变长度类型。
例外:一个长度小于4个字符的字符数据的列不会被转换为varchar类型

对于MyISAM表,使用字符尽可能,尤其是MyISAM和ISAM数据表,这往往需要进行修改和支离破碎。缺点是占用磁盘空间。

对于InnoDB表,因为数据行的固定长度和可变长度数据的内部存储格式不区分(所有数据行共享一个页眉,页眉部分持有指针相关的数据列),所以使用char类型的未必是好的比varchar类型。事实上,因为char类型通常需要比varchar类型更多的空间,这有利于使用从减少空间占用和减少磁盘I / O角VARCHAR类型

2条:
性格应该是最常见的一种,但似乎每个数据库是不同的,如Oracle VARCHAR2有什么。但MySQL似乎最有可能集中在CHAR和VARCHAR。
谈论的差异。查尔的长度是固定的,而varchar采用基于特定长度的存储空间。例如,char、varchar(255)(255),当存储字符串Hello World

如此看来,varchar比炭更聪明,不焦有地方使用它吗它仍然有很多优点。

首先,存储很短的信息,如门的卡101201号。这样的短信应使用char、varchar也因为占一个字节存储信息的长度,这是为了节省存储现在。

二、固定长度。例如,使用UUID作为主键,宜使用char。因为他的固定长度的varchar动态消失根据长度的特点,也占一个长度信息。

三、柱很频繁的改变。因为varchar有额外的计算和存储得到长度每。如果有一个非常频繁的变化,将有大量的计算能量,这是不必要的char。


另一个问题是,由于varchar varchar可以自动适应存储空间,然后varchar(8)和varchar(255)商店都应该是一样的。每一张桌子都设计好了,它的效果会很好,所以以后不会有足够的麻烦,这是正确的想法吗答案是negative.mysql将表中的信息在内存中。在第一次查询后,它将缓存。Linux是非常明显的,但Windows似乎并不知道它。当存储器被应用时,它将根据固定长度被固定。如果varchar是大的,会有一个问题,因此应当要求。

摘要:看看DZ数据表仔细,与该领域的固定长度的基本字符…