我想创建一个个人笔记数据库,用来存储相当长的HTML或文本笔记。在使用VARCHAR
和TEXT
字段时有什么区别?哪一个更高效?
我认为VARCHAR
的最大长度是65535个字符,尽管我无法想象是否有任何内容超过这个限制。我想知道是否可以自动压缩某些数据类型,但我觉得这并不简单(因为实际使用中会占用太多CPU时间)。
我想创建一个个人笔记数据库,用来存储相当长的HTML或文本笔记。在使用VARCHAR
和TEXT
字段时有什么区别?哪一个更高效?
我认为VARCHAR
的最大长度是65535个字符,尽管我无法想象是否有任何内容超过这个限制。我想知道是否可以自动压缩某些数据类型,但我觉得这并不简单(因为实际使用中会占用太多CPU时间)。
如果您不确定文本是否总是少于65535个字符,请不要冒险使用varchar
。我认为您应该使用mediumtext
甚至longtext
类型,但为了提高性能,请将它们放入单独的表中。例如,创建一个名为Notes
的表,其中包含笔记ID、标题、创建日期和创建者用户,还有一个与Notes
相关联的NotesText
表,只包含笔记ID和文本列。这将防止查询文本类型列并在不需要时从数据库中检索它。
AFAIR TEXT仅限于65k个字符,MEDIUMTEXT为1600万个字符,而LONGTEXT最大为4GB :-)
VARCHAR的最大长度不是65535个字节;行的最大长度是那么多个字节,VARCHAR的最大长度取决于表中其他列的情况。因此,如果您可能需要那么多字符,您将需要一个TEXT或BLOB列。这些被单独存储在磁盘上,因此倾向于更慢(不是CPU使用量,而是总时间)。