我的问题是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标准.因此,您的脚本和应用程序在数据库供应商之间更具可移植性.