优化前分析
1、DDL
CREATE TABLE `tbl_order_snapshot` ( `order_id` bigint(16) NOT NULL COMMENT '订单id', `server_id` int(10) NOT NULL COMMENT '租赁商id', `item_id` char(20) NOT NULL COMMENT '产品id', `images` varchar(500) DEFAULT NULL COMMENT '封面图片', `item_num` int(5) DEFAULT NULL COMMENT '订单产品数', `rental_money` decimal(11,2) DEFAULT NULL COMMENT '订单总租金', `deposit` decimal(11,2) DEFAULT NULL COMMENT '押金', `scheme_title` varchar(100) DEFAULT NULL COMMENT '产品标题', `sub_title` varchar(100) DEFAULT NULL COMMENT '推广标题', `model` varchar(100) DEFAULT NULL COMMENT '型号', `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌中文名', `sku_name` varchar(100) DEFAULT NULL COMMENT '套餐名字', `rental_data` varchar(500) DEFAULT NULL COMMENT '租金设置', `buyout` decimal(11,2) DEFAULT NULL COMMENT '买断价格', `machine_desc` text COMMENT '机器描述', `detail_params` text COMMENT '规格参数', `new_old_tag` varchar(100) DEFAULT NULL COMMENT '新旧标签id', `good_choice_tag` varchar(100) DEFAULT NULL COMMENT '精选标签', `time_start` int(10) DEFAULT NULL COMMENT '开始租期', `time_end` int(10) DEFAULT NULL COMMENT '结束租期', `created_at` int(10) NOT NULL COMMENT '快照时间', PRIMARY KEY (`order_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
优化方案
1、拆表方式:垂直分表
2、优化后DDL
CREATE TABLE `tbl_order_snapshot` ( `order_id` bigint(16) NOT NULL COMMENT '订单id', `server_id` int(10) NOT NULL COMMENT '租赁商id', `item_id` char(20) NOT NULL COMMENT '产品id', `item_num` int(5) DEFAULT NULL COMMENT '订单产品数', `rental_money` decimal(11,2) DEFAULT NULL COMMENT '订单总租金', `deposit` decimal(11,2) DEFAULT NULL COMMENT '押金', `scheme_title` varchar(100) DEFAULT NULL COMMENT '产品标题', `model` varchar(100) DEFAULT NULL COMMENT '型号', `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌中文名', `sku_name` varchar(100) DEFAULT NULL COMMENT '套餐名字', `buyout` decimal(11,2) DEFAULT NULL COMMENT '买断价格', `new_old_tag` tinyint(1) DEFAULT NULL COMMENT '新旧标签id', `good_choice_tag` tinyint(1) DEFAULT NULL COMMENT '精选标签', `time_start` int(10) DEFAULT NULL COMMENT '开始租期', `time_end` int(10) DEFAULT NULL COMMENT '结束租期', `created_at` int(10) NOT NULL COMMENT '快照时间', PRIMARY KEY (`order_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `tbl_order_snapshot_extra` ( `order_id` bigint(16) NOT NULL COMMENT '订单id', `images` varchar(500) DEFAULT NULL COMMENT '封面图片', `sub_title` varchar(100) DEFAULT NULL COMMENT '推广标题', `rental_data` varchar(500) DEFAULT NULL COMMENT '租金设置', `machine_desc` text COMMENT '机器描述', `detail_params` text COMMENT '规格参数', PRIMARY KEY (`order_id`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;