优化还是围绕业务进行

业务+索引

业务+sql语句

1、慢sql捕捉设置打开

2、explain sql

1、查看sql扫描行数

优化器可能不靠谱,analyze table tablename 就可以重新统计索引信息
重建索引,减少空洞
alter table T drop index k;
alter table T add index(k);
重建主键索引:alert table T engine = InnoDB

2、查看使用的索引

  1. 是否全表扫描,
  2. 是否使用有是用到索引,
  3. 使用的索引是否正确,force_index强制走索引
  4. 联合索引注意索引顺序,使用时最左前缀原则,注意索引大小,根据业务合理判断
  5. 索引下推,注意回表次数,避免多次回表

    3、避免使用*

    4、字段优化

  6. 使用varchar(变长)代替char(固定长度)

  7. 过长字符串优化,可以考虑前缀索引,控制长度,和索引大小
  8. 注意隐式转换 num = 1 其实是 num = ‘1’

5、数据库flush时机

redo log大小,checkpoint的flush时机
注意磁盘io,修改innodb_io_capacity

6、innodb刷盘速度

7、redo log设置

8、字符集

9、注意锁的问题

表锁和行锁
gap-lock