我的问题是tinyblob& amp; TINYTEXT?
购买我的真实问题是什么原因,如果有的话,我会选择varchar(255)而不是tinyblob或tinytext?
答案 0 :(得分:16)
主要是storage requirements和内存处理/速度:
在下表中,
M
表示非二进制字符串类型的字符长度和二进制字符串类型的字节。L
表示给定字符串值的实际字节长度。VARCHAR(
M
),VARBINARY(M
):
L
+ 1 如果列值需要0 - 255,则为bytes 字节,
如果值可以,L
+ 2个字节 需要超过255个字节TINYBLOB,TINYTEXT:
L
+ 1个字节,其中L
< 2 8
此外,请参阅this帖子:
对于每个正在使用的表,MySQL分配 内存为4行。对于这些中的每一个 行CHAR(X)/ VARCHAR(X)列 X字符。
另一方面,TEXT / BLOB是 由8字节指针+ a表示 1-4字节长度(取决于 BLOB / TEXT类型)。 BLOB / TEXT是 动态分配使用。这将 使用更少的内存,但在某些情况下 可能会在很长时间内破坏你的记忆 运行
编辑:另外,blob存储二进制数据和文本存储ASCII,这是TINYBLOB和TINYTEXT之间的唯一区别。
答案 1 :(得分:5)
VARCHAR(255)是比tinyblob或tinytext更多的SQL标准。因此,您的脚本和应用程序将在数据库供应商之间更具可移植性。
答案 2 :(得分:-8)
您无法将CHARACTER SET应用于TINYTEXT,但您可以将VARCHAR(255)