单行上的TEXT字段是否有任何限制?

时间:2011-11-10 09:06:35

标签: mysql

我需要开发一个国际网站。假设我有一个名为Article的表:

articleID | data | text_EN | text_FR | text_DE | text_ES

如您所见,单行包含文本翻译的每个版本。考虑到每种语言的每个文本字段大约有1500个字符,mysql管理这样的表会有什么问题吗?

我曾经听说过对一行占用多少空间存在严格的限制。

3 个答案:

答案 0 :(得分:1)

MySQL确实存在行大小限制(MyISAM为64K,InnoDB IIRC为8K),但如果您使用TEXTBLOB字段则无关紧要。< / p>

这些字段实际上是指针,数据本身存储在行外。根据{{​​3}},每个TEXT字段只占用9到12个字节的行空间。

那就是说,我第二个@Bill的建议:文章翻译最好存储在行而不是列中。

答案 1 :(得分:1)

好的,据我所知,一切都有其局限。

您可以从此处找到更多信息。

http://www.electrictoolbox.com/maximum-length-mysql-text-field-types/

但是我认为当你读到这个问题时问题就会解决。

答案 2 :(得分:0)

描述行长度限制很复杂。有关详细信息,请参阅此博客:Blob Storage in InnoDB

但我强烈建议您不要将文本存储在这样的列之间。而是存储在行中:

CREATE TABLE Article (
  articeID INT NOT NULL AUTO_INCREMENT,
  language CHAR(2) NOT NULL,
  article_text TEXT,
  PRIMARY KEY (articleID, language)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;