1、使用【 覆盖索引 】避免回表锁造成的时间消耗
1、查询语句的时候避免使用select *
2、创建索引添加适当的列避免回表
2、使用【 联合索引 】区分度比较高的列放到前面
注意联合索引的最左匹配原则
3、对索引进行函数计算或者表达式计算会导致索引失效 🔒
4、利用子查询优化超多分页场景
5、explain命令查询执行计划 show profile查询执行的性能消耗
6、在事务开始后,事务内尽可能只操作数据库,减少锁持有时间
7、尽量避免字符串查询,如果允许的话可以使用Elasticsearch
8、如果优化都做了还是查询的很慢,可以做一些聚合表,线上的业务直接查聚合之后的数据
9、读写瓶颈问题
9.1 如果是单库的情况下,可以考虑读写分离,提升读/写的性能
9.2 主从结构下还是存在瓶颈的话,可以考虑分库分表
注意 分库分表下的id尽量保证递增