我对MySQL varchar
数据类型有些怀疑。众所周知,比较MySQL varchar和IBM DB2 varchar dataype
char
是一种固定长度的数据类型。因此,char值的存储大小等于该列的最大大小 。但是,对于“varchar”,它是一种可变长度数据类型,因此,varchar
值的存储大小是输入数据的实际长度,而不是此列的最大大小。这就是为什么varchar
通常在需要存储字符/文本类型的数据并保留未使用的内存以供将来使用时更多使用。
最近,我知道了......在IBM DB2的情况下,如果您在表的其余列的中间使用任何varchar
列,那么该特定列中字符的存储大小等于orignal varchar
列的大小。
EX:如果在表中有3列是这样的:
- 姓:炭(50)
- 名字:VARCHAR(50)
- EMAILID:炭(50)
因此,现在如果您想将此文本('Majhi')存储到数据类型为varchar(50)
的coloumn“lastName”中,那么它将采用完整的50char存储大小,而不是仅采用5chars,这是实际的实际大小文本( 'Majhi')。
这就是为什么在IBM DB2中包含任何varchar数据类型的表颜色在其余颜色的中间也与char
数据类型的作用相同。所以,内存优化不会发生。
所以,我只想知道我们的MySQL是以相同的方式工作,还是不能区分varchar
dataype coloumn的存在和相应的工作,因为varchar
数据类型列需要工作。
如果该字段位于行的中间,那么DB2声明DB2将在varchar(50)中使用50个字符来存储'Mahji'是不正确的。它需要9个字节--5个为实际值,4个字节存储字符串的长度。如果列是可空的,则空指示符将会多出1个字节。 – 2012-01-18 17:19:50