我需要开发一个国际网站。假设我有一个名为Article的表:
articleID | data | text_EN | text_FR | text_DE | text_ES
如您所见,单行包含文本翻译的每个版本。考虑到每种语言的每个文本字段大约有1500个字符,mysql管理这样的表会有什么问题吗?
我曾经听说过对一行占用多少空间存在严格的限制。
答案 0 :(得分:1)
MySQL确实存在行大小限制(MyISAM为64K,InnoDB IIRC为8K),但如果您使用TEXT
或BLOB
字段则无关紧要。< / 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;