Text是否在Mysql中有行限制?

时间:2014-01-31 04:25:42

标签: mysql

What is the MySQL VARCHAR max size?

我搜索了有关varchar vs text的stackoverflow并研究了文档。

我不确定我是否理解它是正确的,但让我问你这个问题。我有Mysql版本5.5.34,是的最大varchar大小是65535字节,我网站上的文字内容不能超过600个字符,我更喜欢使用varchar(600)而不是{{ 1}}。

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

rajukoyilandy回答

varchar有64K行限制

paxdiablo回答

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

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

所以我决定使用Text

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

当我在最顶层看到这个文档时,它说

Text

我的问题是,无论您使用 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 还是Text,行限制为65kb?或者如果您使用Varchar,则没有行限制?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

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

  

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

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

答案 1 :(得分:0)

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

  

BLOB和TEXT列的数量从一到四加八个字节   朝向行大​​小限制,因为它们的内容是分开存储的   从剩下的那一行开始。

所以是的,无论你使用什么,行限制是65KB,但由于BLOB和TEXT类型是分开存储的,因此内容的长度不计入行大小,只是初始one to four plus eight个字节。< / p>

这就是为什么你可以使用LONGBLOB LONGTEXT来存储大文件,并且仍然可以在表格中只有一个LONGBLOB / LONGTEXT列。

至于哪个是更好的VARCHAR(600)vs TEXT,使用VARCHAR,每列占用1802个字节,因此在行限制时仍有很大的空间。但是对于性能,您必须做基准测试,因为this comment points out内联存储在查询中经常使用时会更快。