对于开发者而言,对MySQL的调优重点一般是在「开发规范」、「数据库索引」又或者说解决线上慢查询上。规范上只要有查询需求都应该建索引。【坑】
是否能使用覆盖索引,减少回表【坑】所消耗的时间。意味着,我们在select 的时候,一定要**指明对应的列,而不是select ***。
考虑是否组建联合索引,如果组建联合索引,尽量将区分度最高的放在最左边,并且需要考虑最左匹配原则。【坑】
对索引进行函数操作或者表达式计算会导致索引失效
利用子查询优化超多分页场景。比如 limit offset , n 在MySQL是获取 offset + n的记录,再返回n条。而利用子查询则是查出n条,通过ID检索对应的记录出来,提高查询效率。
通过explain命令来查看SQL的执行计划,看看自己写的SQL是否走了索引,走了什么索引。通过show profile 来查看SQL对系统资源的损耗情况(不过一般还是比较少用到的)
在开启事务后,在事务内尽可能只操作数据库,并有意识地减少锁的持有时间(比如在事务内需要插入&&修改数据,那可以先插入后修改。因为修改是更新操作,会加行锁。如果先更新,那并发下可能会导致多个事务的请求等待行锁释放)