mysql 创建innodb_使用MySQL如何有效地创建基于 INNODB 引擎的表

本文讨论了为何在尝试创建一个包含大量varchar列的MySQL INNODB表时会遇到'Row size too large'错误,并提出了优化建表策略。建议减少列数,合理使用数据类型如bool、enum和datetime,以及考虑列的存储需求以提高查询效率。解决方案包括拆分表和缩短列长度以适应INNODB的存储限制。
摘要由CSDN通过智能技术生成

本文最初与2016年发布在我的个人微信公众号里面,现发布在这里。

有用户问我们为什么下面这个建表语句会执行失败,报错是 "Row size too large ...."

下面我就以这个例子出发讲一讲使用mysql如何有效地建表。本文使用的图片是从网络搜索到的,不是我自己制作的,在此感谢图片的作者和拥有者。

CREATE TABLE bad_table (

col1 varchar(20) NOT NULL DEFAULT '000001',

col2 varchar(100) DEFAULT NULL,

col3 varchar(200) DEFAULT NULL,

col4 varchar(100) DEFAULT NULL,

col5 varchar(200) DEFAULT NULL,

col6 varchar(6) DEFAULT NULL,

col7 varchar(12) DEFAULT NULL,

col8 varchar(10) DEFAULT NULL,

col9 varchar(9) DEFAULT NULL,

col10 varchar(3) DEFAULT NULL,

col11 varchar(10) DEFAULT NULL,

col12 varchar(2) DEFAULT NULL,

col13 varchar(5) DEFAULT NULL,

col14 varchar(1) DEFAULT NULL,

col15 varchar(3) DEFAULT NULL,

col16 decimal(24,6) DEFAULT NULL,

col17 varchar(3) DEFAULT NULL,

col18 decimal(24,6) DEFAULT NULL,

col19 varchar(50) DEFAULT NULL,

col20 varchar(12) DEFAULT NULL,

col21 varchar(12) DEFAULT NULL,

col22 varchar(1) DEFAULT NULL,

col23 varchar(3) DEFAULT NULL,

col24 varchar(3) DEFAULT NULL,

col25 varchar(400) DEFAULT NULL,

col26 int(11) DEFAULT NULL,

col27 varchar(10) DEFAULT NULL,

col28 varchar(1) DEFAULT NULL,

col29 varchar(32) DEF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值