一些简单实用的原则
- 避免使用Count(*),sum() 语句
需要的时候,建立数据汇总表,在数据更新时更新这个表。数据一致性,可以通过独立程序批量同步完成。 - 减少或不使用join
在Table中冗余需要的字段,尽量在一个表里面拿到需要的所有字段 - Order by 只能使用一个字段
需要2个以上的字段时,对表结构进行重新规划,把order by合并到一个字段,并建立index - 使用limit
对于取有限结果集的select,一定要用limit,减少数据库到应用之间数据传递的数量。 - Where条件里面,不能使用对column的函数,比如 date(createtime) 之类的。
- 建立索引
- 为查询条件添加索引
- 多个查询条件时使用复合索引(如 ALTER TABLE user ADD INDEX idx_name_status(name, status))
- 复合索引具有最左前缀原则
- 左边应该放置使用最频繁的列
- 避免使用Transaction,除非是与钱相关的。
- 主从分离,读写分离:但程序要在数据读写不一致时,避免错误