一、设计阶段:
    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
    image.png