一、设计阶段:
1.使用适当的数据类型和大小
2.尽量从设计上使用单表解决业务查询
3.适当添加索引,唯一列使用唯一索引
4.优先设计三星索引(尽量满足2个):
索引将相关记录放在一起 ★
索引中的数据顺序和查询中的排列顺序一致 ★★
索引中的列包含查询中需要的全部列 ★★★
二、查询阶段:
1.尽量不适用select * —-> 1)会让优化器无法使用索引;2)增加额外的I/O、内存和CPU的消耗
2.慎用join操作 —-> 单表可以减少锁的竞争。有利于对业务的发展、数据库的拆分(A B 联表可 where in)
3.慎用子查询和临时表 —->1)未带索引的字段groupby;2)union查询;3)部分order by操作(例如distincet函数和order by一起且作用于同一个字段)。
4.尽量不使用limit,部分场景改为bewteen and
