我的问题是 tinyblob 和 tinytext 之间真的有什么区别吗?
购买我真正的问题是什么原因(如果有的话)我会选择 varchar(255) 而不是 tinyblob 或 tinytext?
我的问题是 tinyblob 和 tinytext 之间真的有什么区别吗?
购买我真正的问题是什么原因(如果有的话)我会选择 varchar(255) 而不是 tinyblob 或 tinytext?
主要是存储要求和内存处理/速度:
在下表中,
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 之间的唯一区别。
VARCHAR(255) 比 tinyblob 或 tinytext 更符合 SQL 标准。因此,您的脚本和应用程序将更易于跨数据库供应商移植。
您不能将 CHARACTER SET 应用于 TINYTEXT,但可以应用于 VARCHAR(255)