一、索引优化 ✅
- 合理使用索引
- 避免对低选择性字段(如布尔值)创建索引
- 对常用查询条件字段添加唯一索引(如主键)
- 使用
pg_stat_user_indexes
监控索引使用率
- 索引类型选择
- 普通索引:
CREATE INDEX idx_name ON table(column)
- 唯一索引:
CREATE UNIQUE INDEX idx_unique ON table(column)
- 全文索引:
CREATE INDEX idx_fulltext ON table USING gin(to_tsvector('zh'::regconfig, content))
二、查询优化 🔍
- 减少查询复杂度
- 避免使用
SELECT *
,明确指定字段
- 使用
EXPLAIN ANALYZE
分析执行计划
- 优化 JOIN 条件和顺序
- 常见优化技巧
- 使用
LIMIT
和 OFFSET
分页查询
- 避免在 WHERE 子句中对字段进行函数操作
- 启用查询缓存(
shared_buffers
参数调整)
三、配置调优 ⚙️
- 关键参数调整
work_mem
:控制排序和哈希操作内存
effective_cache_size
:反映数据库缓存大小
checkpoint_segments
:优化检查点频率
- 连接池管理
- 使用
pgBouncer
减少连接开销
- 设置合理的
max_connections
和 idle_in_transaction_session_timeout
四、扩展阅读 📚