数据库优化

在工作过程中学会的一些数据库相关的性能调优相关

慢sql优化

查询优化

索引
单列索引

where\order by\group by 常用的字段创建单列索引

组合索引

涉及多列条件查询创建组合索引,注意符合最左前缀匹配原则

最左前缀匹配原则:

覆盖索引

查询的字段被索引全部覆盖,不用访问表

避免过度索引

过多索引导致INSERT\UPDATE\DELETE开销变大

优化查询语句
减少使用select *
减少在where中对字段进行函数操作

where year(ts)=2024 应改成 where ts>='2024-01-01' and ts<='2024-12-31'

减少在where中使用OR

OR会全表扫描,替换成IN或子查询

减少子查询

使用JOIN替代子查询

合理使用JOIN

多表关联查询需要关联的字段有索引,连接顺序需要小表驱动大表(小表在左,大表在右)

分页查询
limit offset

使用索引定位起始位置

比如WHERE id > last_seen_id LIMIT 10

减少数据扫描量

不要 SELECT *,只选择主键字段返回结果后再根据主键查询详细信息。

临时表和缓存
避免死锁和锁等待

索引优化

表结构设计优化

事务和锁优化

配置优化

监控和调优

EXPLAIN分析查询语句

EXPLAIN (SQL)查看是否走索引

scheme事务分析查看慢sql
druid

根据业务看是否加防抖和遮罩,比如导出报表