小说用户表结构优化 - MySQL 5.7

本文介绍了如何优化 MySQL 5.7 中的 novel_user 表结构,以提高性能和数据完整性。

原始 SQL 代码:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for novel_user
-- ----------------------------
DROP TABLE IF EXISTS `novel_user`;
CREATE TABLE `novel_user`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像地址',
  `source` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '三方',
  `source_user_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '三方id',
  `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 NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_username`(`username`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

优化措施:

  1. 更改存储引擎: 将表的存储引擎从 MyISAM 改为 InnoDB,因为 InnoDB 支持事务和行级锁定,能够提高并发性能和数据完整性。
  2. 更改字符集: 将字符集从 utf8mb4_general_ci 改为 utf8mb4_unicode_ci,因为 utf8mb4_unicode_ciutf8mb4_general_ci 更准确地处理字符排序和比较。
  3. 调整字段类型:
    • review_status_msg 字段改为 TEXT 类型,因为 varchar(255) 可能无法存储大量的审核状态描述信息,而 TEXT 类型可以存储更多的文本信息。
    • username 字段改为 varchar(16),因为 32 个字符对于用户名来说可能过长,且减小字段长度可以降低存储空间和提高查询性能。
    • sourcesource_user_idcreate_byupdate_byremark 字段改为 TEXT 类型,因为这些字段可能包含大量的文本信息。
  4. 添加索引: 如在 review_status 字段上添加索引,以加快审核状态查询的速度。
  5. 使用分区表: 使用分区表来分割数据,以提高查询性能和减少数据维护成本。
  6. 定期清理无用数据和索引: 以提高数据查询和维护的效率。

优化后的 SQL 代码:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for novel_user
-- ----------------------------
DROP TABLE IF EXISTS `novel_user`;
CREATE TABLE `novel_user`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
  `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '头像地址',
  `source` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '三方',
  `source_user_id` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '三方id',
  `review_status` int(10) UNSIGNED ZEROFILL NOT NULL COMMENT '审核状态',
  `review_status_msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '审核状态描述',
  `create_by` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_by` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '更新者',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `remark` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '备注',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_username`(`username`) USING BTREE,
  KEY `idx_review_status` (`review_status`)
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

注意:

  • 以上只是一些常见的优化建议,具体需要根据实际情况进行调整。
  • 在进行任何数据库更改之前,请务必备份数据。
  • 分区表需要根据数据量和访问模式进行设计,以获得最佳效果。
  • 定期清理无用数据和索引可以提高数据库的性能和效率。

通过以上优化措施,可以有效提高 novel_user 表的性能和数据完整性,为小说平台提供更好的用户体验。

小说用户表结构优化 - MySQL 5.7

原文地址: https://www.cveoy.top/t/topic/m8aU 著作权归作者所有。请勿转载和采集!

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