1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)
2、涉及联表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合
3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度
4、针对数量大的表进行历史表分离--分库分表(如交易流水表)
水平分表--行级A表100w数据,数据0-50w一个表,50-100w一个表
垂直分表--列级A表10个字段,字段0-5一个表,5-10一个表
5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步
6、explain分析sql语句,查看执行计划,分析索引是否用上,最左匹配索引,分析扫描行数等等
7、查看mysql执行日志,看看是否有其他方面的问题