VARCHAR(255)和TINYTEXT字符串类型在MySQL中有何区别?
它们都允许存储最大长度为255个字符的字符串。存储要求也相同。那么我应该在什么情况下更倾向于使用其中一种呢?
在 TINYTEXT
类型的列中不能赋予 DEFAULT
值,并且您也不能在该列上创建无前缀索引。
在内部,为了处理包括 TINYTEXT
在内的 TEXT
列,需要在内存中分配额外的对象,这可能会导致大型记录集上的内存碎片化。
请注意,这仅涉及记录集中列的内部表示,而不涉及它们在磁盘上的存储方式。
使用 VARCHAR
可以将列设置为 NULL
或 NOT NULL
,并且可以设置 DEFAULT
值,但是 TEXT
不支持。如果需要其中一个或两个功能,请使用 VARCHAR
,即 NULL
和 DEFAULT
。
在varchar中,您必须设置字符的长度,而在tanytext中没有这样的限制,它可以节省数据库的内存,例如:
对于地址,您必须定义varchar(50),然后您的地址可能是50个字符或更少。最糟糕的情况是,如果字符超过50个,则varchar的限制就会出现。如果字符少于50个,则它将占用50个字符的内存,在这种情况下,内存会增加。
因此,请使用tanytext,它根据字符的大小定义字符长度,从而节省内存。
TINYTEXT
隐含的最大长度为 255 字节(或者可能是 256)。 - Rick James