我的表格如下所示:
CREATE TABLE IF NOT EXISTS `levels` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`name` varchar(25) NOT NULL,
`creator` varchar(25) NOT NULL,
`levelcode` longtext NOT NULL,
`description` mediumtext NOT NULL,
`date` date NOT NULL,
`views` int(6) NOT NULL,
`favCount` int(6) NOT NULL,
`total_votes` int(11) NOT NULL,
`total_value` int(11) NOT NULL,
`rating` float(4,2) NOT NULL,
`spamCount` int(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
基本上我创造了一个游戏,人们可以提交自己的关卡。我目前正在讨论的是是否将levelcode列移动到它自己的表中,甚至是它自己的文本文件中的每个级别。 Levelcode可以变得相当大(500,000+个字符)
有什么建议吗?
答案 0 :(得分:0)
长篇文章对你来说应该没问题。从这里的文档:
http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html
LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]
A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 – 1) characters.
The effective maximum length is less if the value contains multi-byte characters.
The effective maximum length of LONGTEXT columns also depends on the configured
maximum packet size in the client/server protocol and available memory. Each
LONGTEXT value is stored using a 4-byte length prefix that indicates the number
of bytes in the value.
编辑:我认为提到的数据包大小是MySQL数据包大小,默认为16MB。
答案 1 :(得分:0)
你可以在你的情况下使用LongText作为Longtext的限制
LONGBLOB, LONGTEXT L + 4 bytes, where L < 2^32 (4 Gigabytes)
查看此link。
答案 2 :(得分:0)
如果你不想用它杀死MySQL的性能,请将它存储在硬盘上并在表格中保存路径。