我想创建一个个人笔记数据库,用HTML或文本存储相当长的笔记。会有什么区别 VARCHAR
和 TEXT
哪个领域哪个会更有效率?
我认为 VARCHAR
最大值是65535个字符,如果我包含大于此值的任何东西,我无法绕过头。我想知道某种数据类型是否可以自动压缩,虽然我认为它不那么简单(因为它在实际使用中占用了太多的CPU时间)。
我想创建一个个人笔记数据库,用HTML或文本存储相当长的笔记。会有什么区别 VARCHAR
和 TEXT
哪个领域哪个会更有效率?
我认为 VARCHAR
最大值是65535个字符,如果我包含大于此值的任何东西,我无法绕过头。我想知道某种数据类型是否可以自动压缩,虽然我认为它不那么简单(因为它在实际使用中占用了太多的CPU时间)。
如果您不确定文本是否总是短于65535个字符,则不要冒险使用 varchar
。我认为你绝对应该使用 mediumtext
甚至 longtext
键入但要提高性能将它们放入单独的表中。例如创建表 Notes
它将包含音符ID,标题,创建日期和创建它的用户 NotesText
将与之关联的表 Notes
但只包含note id和你的文本列。这样可以防止查询文本类型列并在不需要时从数据库中检索它。
如果您不确定文本是否总是短于65535个字符,则不要冒险使用 varchar
。我认为你绝对应该使用 mediumtext
甚至 longtext
键入但要提高性能将它们放入单独的表中。例如创建表 Notes
它将包含音符ID,标题,创建日期和创建它的用户 NotesText
将与之关联的表 Notes
但只包含note id和你的文本列。这样可以防止查询文本类型列并在不需要时从数据库中检索它。
AFAIR TEXT限制为65k字符,MEDIUMTEXT限制为1600万,LONGTEXT最大限制为4GB :-)
VARCHAR最大长度不是65535字节;行的最大长度是该字节数,VARCHAR的最大长度取决于表中的其他列。因此,如果您可能需要那么多字符,则需要TEXT或BLOB列。它们分别保存在磁盘上,因此速度较慢(不是CPU使用情况,而是总时间)。