用途:把慢查询改造成高效操作,覆盖慢查询排查、性能化模式设计、应用响应时间优化、降低数据库负载与成本、提升大数据集扩展性、分析 EXPLAIN 计划、实现高效索引、解决 N+1 查询问题。
主要能力:用 EXPLAIN、EXPLAIN ANALYZE 与 EXPLAIN (ANALYZE, BUFFERS, VERBOSE) 分析执行计划,关注 Seq Scan、Index Scan、Index Only Scan、Nested Loop、Hash Join、Merge Join、Cost、Actual Time 等指标。索引策略:B-Tree、Hash、GIN、GiST、BRIN,支持复合索引、部分索引、表达式索引、覆盖索引(INCLUDE)与 JSONB GIN 索引。查询模式:避免 SELECT *、避免在 WHERE 中对索引列用函数、先过滤再 JOIN。优化模式包括消除 N+1 查询(JOIN 或批量 IN 查询)与基于游标的分页替代大 OFFSET。
使用方式:通过 EXPLAIN 与索引创建命令(如 CREATE INDEX idx_users_email ON users(email);)分析并实施;ORM 层用预加载避免 N+1。
适用场景:慢查询调试、模式设计、查询计划分析、N+1 与分页优化。
限制:不同数据库对索引类型与特性支持不同(如 Hash/GIN/GiST/BRIN/INCLUDE 为 PostgreSQL);过度索引会拖慢写入;缺失事实暂未提供。