varchar(255)v tinyblob v tinytext

时间:2008-09-27 16:20:01

标签: sql mysql database-design

我的问题是tinyblob& amp; TINYTEXT?

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

3 个答案:

答案 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)