【发布时间】:2011-03-13 21:30:21
【问题描述】:
我正在试验 MySQL 枚举数据类型。我有一个 15 列的表,其中 7 列是 ENUM 数据类型。没有 VARCHAR,最大列 - 类型 DATETIME。所以我应该在 mysql 的 65535 字节限制之内。即使在 InnoDB 的 1000 字节限制内。
ENUM 类型有很多大字符串的可能性(2 列的范围为 1000 秒)。我只是更改了表格以向表格添加更多 ENUM 值
ALTER TABLE <tablename> MODIFY <enumCol> ([...1000 values each of max 40 bytes]);
然后得到这个错误-
ERROR 1117 (HY000): Too many columns
我对此进行了研究,发现此错误与 MySql 表的最大行大小有关。 另外,我在这里读到http://dev.mysql.com/doc/refman/5.1/en/column-count-limit.html -
每个表都有一个包含表定义的 .frm 文件。服务器使用以下表达式来检查文件中存储的一些表信息是否与 64KB 的上限
这些 ENUM 值类型是否偶然存储在这里并触发错误(使 .frm 文件 > 64K)?还是发生了完全不同的事情?
【问题讨论】:
-
errrm - 让我说对了,您最多使用 7 个枚举列,每个列可能有 0 到 1000 个值?
-
其中只有一个有 1000 个值。其余的在 50 到 100 之间。我已经阅读了 ENUMS 的优缺点,我想测试它可以给我带来多少速度改进。测试样本有 1100 万行。