一、程序优化标签:总结,union,查询,索引,使用,query,优化 From: https://www.cnblogs.com/daiwk/p/18124820
热点数据使用缓存
数据库读写分离
二、数据库方面的优化
1、数据库设计优化
如果单表数据量过大,可以根据业务来做分表
数据库表可以做一些字段冗余,可以减少连表查询,提升查询效率
2、Sql语句优化
2.1.首先定位慢查询
开启慢查询日志 mysql
slow_query_log:是否开启慢查询
slow_query_log_file:慢查询日志存储路径
long-query-time:慢查询阈值,当查询时间大于阈值时会记录到日志
第三方监测工具
2.Sql优化
1、避免使用select *,只查需要的列
2、如果不需要去重尽量使用union all(union会去重,遍历耗时)
3、子查询改用连表查询(子查询会生成临时表)
4、深分页查询可以将上一页最大Id作为where条件
5、开启执行计划查看查询是否走索引,根据执行计划设置合理的索引
索引如何设置:根据 where条件+group by条件+order by条件来设置组合索引,组合索引字段顺序根据查询字段热点来
避免索引失效:
1)遵循最佳左前缀法则:如果使用组合索引,查询条件必须按组合索引字段排序
2)不在索引列上做任何计算操作
3)使用like时不要以通配符开头('%xx')
4)避免使用is not null或者!=(数据表字段null可以改用0代替)
5)存储引擎不能使用索引中范围条件右边的列
6)不要使用OR(可以改用union all)