小说作者表结构优化:提高效率,节省存储空间

本文将介绍如何优化小说作者表结构,以提高查询效率和节省存储空间。

原表结构

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;

优化后的表结构

  1. 调整数据类型:将review_status字段的数据类型改为tinyint,可以节省存储空间。

  2. 添加索引:对于user_id字段和pen_name字段添加索引,可以提高查询效率。

  3. 使用默认值:将create_bycreate_timeupdate_byupdate_time字段的默认值改为当前用户和当前时间,可以减少插入和更新操作时的代码量。

  4. 删除不必要的字符集和校对规则:由于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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录