2010-08-24 24 views
11

我当时想创建一个个人笔记数据库,用HTML或文本存储笔记时间很长。 VARCHARTEXT字段之间的区别是什么?哪一个可以更有效地使用?MySQL:用于存储长备注的最有效的数据类型?

我认为VARCHAR的最大值是65535个字符,如果我将包含大于此值的任何东西,我无法将头包住。我想知道是否可以自动压缩某种数据类型,但我不认为这很简单(因为它在实际使用中会花费太多的CPU时间)。

回答

10

如果你不知道,如果文本总是会少于65535个字,则不要冒险到使用varchar。我认为你绝对应该使用mediumtext甚至longtext类型但增加性能将它们放置到单独的表中。例如,创建表Notes将包含注释ID,标题,创建日期和创建它的用户以及NotesText表,该表将与Notes相关联,但将仅包含注释ID和文本列。这将防止查询文本类型列,并在不需要时从数据库中检索它。

+0

我发现这是最相关的答案,我很想把它放到另一张表,只是为了实践效率,非常感谢。 – John 2010-08-24 10:31:22

+0

感谢您的接受;)祝您的项目顺利! – 2010-08-24 10:40:52

+0

这是错误的。 Mysql中的文本限制为相同的65535个字符。 – BarsMonster 2010-08-24 11:28:54

2

AFAIR TEXT被限制在65K字,MEDIUMTEXT是1600万,而LONGTEXT是最大4GB :-)

+1

在存储它之前,没有什么限制你压缩和解压缩数据(例如,通过gzip)。在这种情况下,你将不得不使用BLOB类型。 – BarsMonster 2010-08-24 10:21:17

+0

Def。会考虑这样做,但是如果不能查看文本并在查询中使用它们,那么会非常烦人,但我肯定会压缩4MB +文件,谢谢! – John 2010-08-24 10:32:07

2

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

相关问题