除了 SQL 本身,数据库结构设计也会深刻影响性能。字段设计不合理、关联过多、表过宽或过深,都会带来性能问题。
如果一张表字段非常多,可以考虑按业务拆分为多个表。
例如:
- 核心用户信息放一张表
- 扩展资料放另一张表
这样做的好处包括:
- 减少单表宽度
- 提高常见查询效率
- 降低无关字段读取成本
在多对多关系中,增加中间表通常比把多个值塞进一个字段更规范。
例如:
- 用户和角色
- 学生和课程
- 文章和标签
中间表不仅更符合关系模型,也更利于查询和索引优化。
某些场景下,适当增加冗余字段可以减少频繁连接查询。
例如:
- 在订单表中冗余保存用户名
- 在明细表中冗余保存分类名称
当然,这种优化要权衡一致性维护成本。
提升插入速度的常见方法包括:
- 批量插入代替单条插入
- 合理控制索引数量
- 避免不必要的触发器和复杂约束
- 在合适场景中使用事务批量提交
MySQL 也提供了一些表维护语句:
ANALYZE TABLE user;
CHECK TABLE user;
OPTIMIZE TABLE user;它们分别用于:
- 更新统计信息
- 检查表状态
- 整理和优化表空间
结构优化关注的是“表应该怎么设计”,而不是单条 SQL 怎么写。表拆分、中间表、冗余字段和维护语句,都是结构层面的常见优化手段。