2014-01-31 52 views
1

What is the MySQL VARCHAR max size?文本在Mysql中有行限制吗?

我已经在stackoverflow上搜索了关于varchar vs text的内容,并研究了文档。

Iam不确定我是否理解正确的方式,但让我问你这个问题。我有Mysql版本5.5.34和是的最大varchar大小是65535字节和我的网站上的文本内容不能超过600个字符,我宁愿使用varchar(600)而不是Text

由于varchar与表格内联存储,速度更快,当我阅读所有问题的答案时。

rajukoyilandy回答

VARCHAR具有64K行限制

paxdiablo答案

,如果你的行大小已接近64K,您可能要检查你的数据库的模式。这是一个罕见的表格,需要在一个正确设置的(3NF)数据库中有这么大的表 - 这可能,但不是很常见。

如果您想使用更多,可以使用BLOB或TEXT类型。这些不计入该行的64K限制

所以我决定用Text

http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

当我看到这个文档的最顶端,它说

Every table (regardless of storage engine) has maximum row size of 65,535 bytes. 
Storage engines may place additional constraints on this limit, 
reducing the effective maximum row size 

我的问题是,所以无论你使用TextVarchar,行限制是65kb?或者如果您使用Text,则没有行限制?任何帮助是极大的赞赏。

回答

0

http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

BLOB和TEXT列从一数到四个加八个字节每个 向行大小限制,因为它们的内容是从该行的其余部分分开 存储。

所以,是的,不管你使用的行限制为65KB,但由于BLOB和TEXT类型分别存储的内容长度不计入行大小算,刚刚起步one to four plus eight字节做。

这就是为什么您可以使用LONGBLOB LONGTEXT来存储大文件,并且仍然能够在表格中拥有不止一个LONGBLOB/LONGTEXT列的原因。

至于哪个更好VARCHAR(600)vs TEXT,用VARCHAR你会占用每列1802字节,所以当涉及到行限制时你仍然有很多空间可以使用。但是为了提高性能,您必须执行基准测试,因为this comment points out内联存储在查询中经常使用时速度更快。

0

行大小限制适用于存储行本身所需的空间量,这与存储行中数据所需的空间量不同。从您链接到的页面:

BLOB和TEXT列从一到四加八个字节,每个都朝向行大小限制,因为它们的内容与行的其余部分分开存储。

这就是为什么您可以将大量数据存储在BLOB或TEXT字段中而不超出行大小限制的原因。