15

我的问题是 tinyblob 和 tinytext 之间真的有什么区别吗?

购买我真正的问题是什么原因(如果有的话)我会选择 varchar(255) 而不是 tinyblob 或 tinytext?

4

3 回答 3

18

主要是存储要求和内存处理/速度:

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

VARCHAR( M), VARBINARY( M):
L如果列值需要 0 – 255 个字节,则
L+ 1 个字节,如果值可能需要超过 255 个字节,则 + 2 个字节

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

此外,请参阅帖子:

对于正在使用的每个表,MySQL 为 4 行分配内存。对于这些行中的每一行,CHAR(X)/VARCHAR(X) 列占用 X 个字符。

另一方面,TEXT/BLOB 由 8 字节指针 + 1-4 字节长度表示(取决于 BLOB/TEXT 类型)。BLOB/TEXT 在使用时动态分配。这将使用更少的内存,但在某些情况下,从长远来看,它可能会分散您的内存。

编辑:顺便说一句,blob 存储二进制数据,文本存储 ASCII,这是 TINYBLOB 和 TINYTEXT 之间的唯一区别。

于 2008-09-27T16:27:54.043 回答
5

VARCHAR(255) 比 tinyblob 或 tinytext 更符合 SQL 标准。因此,您的脚本和应用程序将更易于跨数据库供应商移植。

于 2008-09-27T16:28:31.937 回答
-8

您不能将 CHARACTER SET 应用于 TINYTEXT,但可以应用于 VARCHAR(255)

于 2010-01-06T22:29:55.957 回答