【发布时间】:2011-01-18 07:40:11
【问题描述】:
MySQL 中的 VARCHAR(255) 和 TINYTEXT 字符串类型有什么区别?
它们中的每一个都允许存储最大长度为 255 个字符的字符串。存储要求也相同。我什么时候应该更喜欢一个而不是另一个?
【问题讨论】:
MySQL 中的 VARCHAR(255) 和 TINYTEXT 字符串类型有什么区别?
它们中的每一个都允许存储最大长度为 255 个字符的字符串。存储要求也相同。我什么时候应该更喜欢一个而不是另一个?
【问题讨论】:
您不能将DEFAULT 值分配给TINYTEXT,也不能在后者上创建无前缀索引。
在内部,会在内存中分配额外的对象来处理TEXT(包括TINYTEXT)列,这可能会导致大型记录集上出现内存碎片。
请注意,这仅涉及列在记录集中的内部表示,而不涉及它们在磁盘上的存储方式。
【讨论】:
使用VARCHAR 可以将列设置为NULL 或NOT NULL,并且可以设置DEFAULT 值,但不能使用TEXT。如果您需要NULL 和DEFAULT 中的一项或两项功能,请使用VARCHAR。
【讨论】:
在 varchar 中你必须设置一个字符的长度,而在 tanytext 中没有这样的东西,它为 ex 节省了数据库的内存:
对于地址,您必须定义 varchar(50),而不是您的地址可能是 50 个字符或更少,更糟糕的情况是您的字符超过 50 个字符,这是 varchar 的限制,如果字符小于 50,它占用50个字符的内存在这种情况下内存是增加的
所以使用 tanytext 它定义的字符长度取决于字符的大小,因此可以节省内存
【讨论】:
TINYTEXT 的 隐式 最大为 255 个字节(或者可能是 256 个)。