SQL 优化方法有哪些
- 硬件/配置参数(各种buffer大小)
- 索引命中
- 减少 I/O, 减少回表
- 减少数据量(网络传输)
- 使用
EXPLAIN - 避免索引失效的情况
- 索引优化
- 联合索引, 索引下推, 索引覆盖, index skip scan, 函数索引
- 长文本使用前缀索引
- like 左模糊优化成右模糊
- 只查自己需要的字段, 避免
select *- 如果有大对象如 TEXT, BLOB, 一个页存不下会发生行溢出1
join使用小表驱动大表- 深分页优化
- 连表查询需要注意不同字段的字符集是否一致, 否则可能会导致全表扫描2
- Partitioning 分区
- 批量 batch 模式
- RC 模式减少锁冲突 (为什么大厂要把默认隔离级别改成 RC)
- OPTIMIZE TABLE
- 索引重建
- 分库分表
- 历史数据归档
- 读写分离
- 主从复制, 半同步复制
- 应用缓存
- MySQL 自带
slow_query_log日志监控慢 sql - 阿里 Druid 连接池的监控
- 应用接口耗时监控…