小说作者表结构优化:提高效率,节省存储空间
小说作者表结构优化:提高效率,节省存储空间
本文将介绍如何优化小说作者表结构,以提高查询效率和节省存储空间。
原表结构
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for novel_author
-- ----------------------------
DROP TABLE IF EXISTS `novel_author`;
CREATE TABLE `novel_author` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` bigint(20) NOT NULL COMMENT '用户id',
`pen_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '作者笔名',
`real_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '真实姓名',
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`phone` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '手机号码',
`bank_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '银行名称',
`bank_account` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '银行账户',
`bank_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '开户行',
`review_status` int(10) UNSIGNED ZEROFILL NOT NULL COMMENT '审核状态',
`review_status_msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '审核状态描述',
`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '创建者',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '更新者',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
优化后的表结构
-
调整数据类型:将
review_status字段的数据类型改为tinyint,可以节省存储空间。 -
添加索引:对于
user_id字段和pen_name字段添加索引,可以提高查询效率。 -
使用默认值:将
create_by、create_time、update_by和update_time字段的默认值改为当前用户和当前时间,可以减少插入和更新操作时的代码量。 -
删除不必要的字符集和校对规则:由于MySQL默认使用
utf8mb4字符集和utf8mb4_general_ci校对规则,因此在表定义时可以省略这些信息,以减少代码量。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for novel_author
-- ----------------------------
DROP TABLE IF EXISTS `novel_author`;
CREATE TABLE `novel_author` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` bigint(20) NOT NULL COMMENT '用户id',
`pen_name` varchar(255) NOT NULL COMMENT '作者笔名',
`real_name` varchar(255) NULL DEFAULT NULL COMMENT '真实姓名',
`email` varchar(255) NULL DEFAULT NULL COMMENT '邮箱',
`phone` varchar(16) NULL DEFAULT NULL COMMENT '手机号码',
`bank_name` varchar(255) NULL DEFAULT NULL COMMENT '银行名称',
`bank_account` varchar(255) NULL DEFAULT NULL COMMENT '银行账户',
`bank_address` varchar(255) NULL DEFAULT NULL COMMENT '开户行',
`review_status` tinyint(3) UNSIGNED ZEROFILL NOT NULL COMMENT '审核状态',
`review_status_msg` varchar(255) NULL DEFAULT NULL COMMENT '审核状态描述',
`create_by` varchar(64) NULL DEFAULT CURRENT_USER COMMENT '创建者',
`create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(64) NULL DEFAULT CURRENT_USER COMMENT '更新者',
`update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`remark` varchar(500) NULL DEFAULT '' COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_user_id` (`user_id`) USING BTREE,
INDEX `idx_pen_name` (`pen_name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
通过以上优化,可以有效地提高小说作者表的查询效率和节省存储空间,同时简化代码,提升开发效率。
注意:在进行表结构优化之前,建议备份数据库,以防止意外数据丢失。
原文地址: https://www.cveoy.top/t/topic/m3Rf 著作权归作者所有。请勿转载和采集!