2008-09-27 88 views

回答

16

主要storage requirements和存储器处理/速度:

在下面的表,M表示字符声明的列长度为非二进制串类型和字节二进制串类型。 L表示给定字符串值的实际字节长度。

VARCHAR(M),VARBINARY(M):
L + 1 字节,如果列中的值需要0 - 255 个字节,如果
L + 2个字节的值可以 需要多于255个字节

TINYBLOB,TINYTEXT:
L + 1个字节,其中L

此外,请参阅this交:

用于在使用中的每个表中,MySQL分配 存储器4点的行。对于这些行中的每一个,使用CHAR(X)/ VARCHAR(X)列将向上提取X个字符 。

甲TEXT/BLOB另一方面是由一个8个字节的指针+一个 1-4字节长度(取决于 BLOB/TEXT类型)表示 。在使用时动态分配BLOB/TEXT 。这将使 使用较少的内存,但在某些情况下,它可能会碎片您的内存中长 运行。

编辑:顺便说一句,斑点存储二进制数据和文本存储的ASCII,多数民众赞成TINYBLOB和TINYTEXT之间的唯一区别。

5

VARCHAR(255)比tinyblob或tinytext更具有SQL标准。因此,您的脚本和应用程序可以跨数据库供应商更便携。

-8

不能CHARACTER SET适用于TINYTEXT,但你可以为varchar(255)

+2

这不是真的,你可以申请字符集都VARCHAR和TINYTEXT(在MySQL的),而不是TINYBLOB。 – 2010-02-14 07:54:56

相关问题