数据库 Skill
处理数据库相关操作时,脚本统一放在 db_scripts/ 目录,并遵循以下实践。
脚本位置
- 所有数据库脚本(迁移、初始化、修复、查询等)置于
db_scripts/ - 可按子目录组织,如
db_scripts/migrations/、db_scripts/init/等
命名规范
- 格式:
YYYYMMDD_功能描述.扩展名,日期开头,下划线后接功能 - 示例:
20250213_add_user_table.sql、20250213_fix_order_status.sql
查询优化
- 避免 N+1 - 使用 JOIN、批量查询或预加载(eager load)
- 索引 - 为常查字段、WHERE/JOIN 条件建立合适索引
- 分页 - 大数据集使用 limit/offset 或游标分页
- 避免 SELECT * - 只选取需要的字段
事务与一致性
- 多步写操作放在事务中
- 注意隔离级别和死锁
- 大事务考虑拆分为小批次
安全
- 参数化查询 - 始终使用预处理/占位符,禁止拼接 SQL
- 敏感数据加密存储
- 连接串、凭据从
.env或dev.env读取,不入库、不硬编码
迁移脚本
- 可逆的迁移脚本
- 大表变更考虑在线迁移、分批执行
- 先加新结构,再迁数据,最后删旧结构