1

我有一个如下所示的表:

    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+ 个字符)

有什么建议吗?

4

2 回答 2

0

您可以在您的情况下使用 LongText,因为 Longtext 的限制是

LONGBLOB, LONGTEXT       L + 4 bytes, where L < 2^32   (4 Gigabytes)

看看这个链接

于 2013-08-11T19:32:32.287 回答
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。

于 2013-08-11T19:30:14.197 回答