一、Mysql列数限制
这里说的限制分为两种,一种是Mysql的限制,一种是存储引擎的限制,比如Innodb、MyISAM。
1.Mysql限制每个表的最大列数为4096列
但是事实上根本不可能到达4096列,因为Mysql对行也有限制,行的总量大小最大为65535,若是行的大小超过这个值,则创建失败,验证如下:
CREATE TABLE t (a VARCHAR(10000), b VARCHAR(10000), c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000), f VARCHAR(10000), g VARCHAR(6000) ) ENGINE=InnoDB CHARACTER SET utf8mb4;
运行截图如下:
2.InnoDB限制每个表的最大列数为1017列
是的,InnoDB要求列的总数不能超过1017列,我们平时大都是使用InnoDB引擎,所以我们真正的列限制应该是1017列。但是对于行的大小限制却比较宽松,但是Mysql在外面拦着,导致行的最大也只能是65535,所以无论是InnoDB还是MyISAM,他们的行大小最大都是65535
二、Mysql行大小限制
这块上面已经说了,这里就总结下:
Mysql限制行大小65535
InnoDB大于65535,但是根据木桶效应,必须也要小于65535