问题 MySQL:最有效的数据类型来存储长音符?


我想创建一个个人笔记数据库,用HTML或文本存储相当长的笔记。会有什么区别 VARCHAR 和 TEXT 哪个领域哪个会更有效率?

我认为 VARCHAR最大值是65535个字符,如果我包含大于此值的任何东西,我无法绕过头。我想知道某种数据类型是否可以自动压缩,虽然我认为它不那么简单(因为它在实际使用中占用了太多的CPU时间)。


11156
2017-08-24 10:07


起源



答案:


如果您不确定文本是否总是短于65535个字符,则不要冒险使用 varchar。我认为你绝对应该使用 mediumtext 甚至 longtext 键入但要提高性能将它们放入单独的表中。例如创建表 Notes 它将包含音符ID,标题,创建日期和创建它的用户 NotesText 将与之关联的表 Notes 但只包含note id和你的文本列。这样可以防止查询文本类型列并在不需要时从数据库中检索它。


10
2017-08-24 10:21



我发现这是最相关的答案,我非常想把它放到另一张表中,只是为了提高效率,非常感谢。 - John
谢谢你接受;)祝你的项目好运! - ŁukaszW.pl
这是错的。 Mysql中的文本限制为相同的65535个字符。 - BarsMonster
好吧..你已经说过了,他可以使用MEDIUMTEXT,但为什么你第三次写同样的东西?你认为他没有看到你的答案? - ŁukaszW.pl
好吧,在他接受了错误的解决方案之后很可能他不会注意到新的评论:-)无论如何,现在它是正确的。 - BarsMonster


答案:


如果您不确定文本是否总是短于65535个字符,则不要冒险使用 varchar。我认为你绝对应该使用 mediumtext 甚至 longtext 键入但要提高性能将它们放入单独的表中。例如创建表 Notes 它将包含音符ID,标题,创建日期和创建它的用户 NotesText 将与之关联的表 Notes 但只包含note id和你的文本列。这样可以防止查询文本类型列并在不需要时从数据库中检索它。


10
2017-08-24 10:21



我发现这是最相关的答案,我非常想把它放到另一张表中,只是为了提高效率,非常感谢。 - John
谢谢你接受;)祝你的项目好运! - ŁukaszW.pl
这是错的。 Mysql中的文本限制为相同的65535个字符。 - BarsMonster
好吧..你已经说过了,他可以使用MEDIUMTEXT,但为什么你第三次写同样的东西?你认为他没有看到你的答案? - ŁukaszW.pl
好吧,在他接受了错误的解决方案之后很可能他不会注意到新的评论:-)无论如何,现在它是正确的。 - BarsMonster


AFAIR TEXT限制为65k字符,MEDIUMTEXT限制为1600万,LONGTEXT最大限制为4GB :-)


2
2017-08-24 10:20



在存储数据之前,没有什么可以限制您压缩和解压缩数据(例如,通过gzip)。在这种情况下,您将不得不使用BLOB类型。 - BarsMonster
业。我会考虑这样做,但是如果不能看到文本并在查询中使用它们会很烦人,那么我肯定会压缩4MB +文件,谢谢! - John


VARCHAR最大长度不是65535字节;行的最大长度是该字节数,VARCHAR的最大长度取决于表中的其他列。因此,如果您可能需要那么多字符,则需要TEXT或BLOB列。它们分别保存在磁盘上,因此速度较慢(不是CPU使用情况,而是总时间)。


2
2017-08-24 10:23