建表时选择合适的引擎

  • 如果表只是以查询为主,很少修改,则可以选择 MyISAM 引擎。
  • 数据库读写分离,读的服务器中的表可以用 MyISAM 引擎。

合理使用索引

  • 对经常查询的列,或排序的列,使用索引。
  • 对需要查询值中的关键字的列,使用 FULLTEXT 索引。
  • 对经常查询的组合条件,建立组合索引。
  • 尽量避免在WHERE子句中使用!=<>操作,或对字段进行NULL值判断,这样会使索引失效,而扫描全表。
  • 尽量用WHERE代替HAVING,因为HAVING是在查询出的结果中进行过滤,WHERE可以使用索引查询。

数据库结构优化

  • 范式优化:比如消除冗余的列等。
  • 拆分表:根据表的特性,必要时对表进行水平拆分和垂直拆分。
    • 垂直拆分:对高并发请求的表,可以根据业务将表拆分,以分担 IO 压力。
    • 水平拆分:对于数据量太大的表,可以考虑水平拆分。

主从复制,读写分离