MySQL 实践| 青训营

148 阅读2分钟
  1. 使用合适的数据类型。例如对字符串使用 varchar 而不是 char, 使用 unsigned 整型可以节省存储空间。还有比如 DECIMAL 这种可以满足精度值的数据结构

  2. 使用连接 (join) 时注意其执行效率,景仿合适的连接类型,并尽量在连接条件中使用索引LEFT JOIN 左连接, 表 1 左连接表 2, 以表 1 为主,关联上表 2 的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。RIGHT JOIN 右连接 和上面相反。

  3. 在查询中避免使用 (select *) 和函数,这会降低查询速度,同时也要避免过多 join 查询。可以适当冗余一些数据来优化查询。

  4. 使用模型结构来组织代码,将模型、控制器、路由等分离开来,保持代码整洁。

  5. 设置适当的数据库连接池容量,不要让连接池溢出或耗尽,定期使用连接池回收功能来维护连接池健康,合理设置连接池空闲超时,不要让大量连接长时间空闲。

  6. 用事务来执行相关的数据库操作,保证数据一致性。

  7. 使用预编译语句 (Prepared Statements) 来防止 SQL 注入攻击。避免 N+1 问题,使用预加载 (Preload) 和关联预加载 (Associations Preload) 来优化查询。

  8. 用索引来优化慢查询,及时关注和优化慢查询日志。

  9. 分页查询时注意效率,尽量在数据库层面完成分页。

直接使用 Limit 和 Offset 手动给它分个页

如果用 Gorm 的话可以直接参考这篇 gorm.io/docs/scopes…

  1. 使用日志功能调试程序,打印执行的 SQL 语句来 analyze。

  2. 使用测试 database 来运行自动化测试,不要直接用线上数据库。

  3. 启用 charset、parseTime 等参数,避免字符集和时间格式错误。