以下内容节选自我的实战课程《从0到1教你搭建一个基于微信小程序的AI智能体应用平台》,课程包含详细代码和讲解,链接如下: https://edu.csdn.net/course/detail/40753

课程目标

  • 完成 核心表设计与关系梳理
  • 实现 基础模型与迁移策略

前置知识

  • MySQL 基础、主外键、索引、事务

知识要点

  • 表:users、points_history、recharge_orders、feedback、bot_free_uses
  • 范式与冗余折中、时间字段与审计字段
  • 迁移与回滚策略(SQL 文件或 Alembic/手工脚本)

实战步骤

  1. 画 ER 图与字段列表(类型、约束、默认值)
  2. 初始化数据库与字符集、时区
  3. 编写建表 SQL:参考 DB/points_system_0624_importable.sql
  4. 在后端 models.py 中映射读写方法(如用户、积分流水、订单)
  5. 加入必要索引(openid、created_at、status 等)

数据库变更规范

  • 所有变更均附变更单与回滚 SQL
  • 灰度数据校验与备份策略

验收标准

  • 数据库建表成功并能被后端正常读写
  • 压测样本下查询性能符合预期(索引命中)
索引选择性与组合索引原则

索引选择性 指的是索引列中不同值的数量与总记录数的比值。选择性越高(越接近1),索引的效率越高。一般建议对高选择性的字段(如用户ID、订单号等)建立单列索引。

组合索引原则: - 组合索引适用于多条件联合查询,优先将区分度高、常用作查询条件的字段放在前面。 - 遵循“最左前缀”原则:查询条件中必须包含索引的最左边字段,索引才能被有效利用。 - 避免为低选择性字段(如性别、状态等)单独建索引,但可作为组合索引的后缀字段。 - 组合索引能覆盖查询时,能进一步提升性能(覆盖索引)。

实践建议: - 分析业务常用查询语句,结合 EXPLAIN 工具评估索引命中情况。 - 例如:points_history 表常用查询为 user_id + created_at,可建立 (user_id, created_at) 组合索引。 - 定期根据实际数据分布和查询情况优化索引结构,避免冗余和无效索引。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐