用途:将慢查询改造为高效操作,通过系统化优化、合理索引与查询计划分析提升数据库性能。适用场景包括排查慢查询、设计高性能数据库结构、优化应用响应时间、降低数据库负载与成本、提升大数据集的扩展性、分析 EXPLAIN 查询计划、实施高效索引以及解决 N+1 查询问题。
主要能力: 一、执行计划分析。使用 EXPLAIN、EXPLAIN ANALYZE 以及 EXPLAIN (ANALYZE, BUFFERS, VERBOSE) 查看计划,关注 Seq Scan(大表全表扫描通常较慢)、Index Scan、Index Only Scan(最优)、Nested Loop、Hash Join、Merge Join 等连接方式,以及 Cost、Rows、Actual Time 等指标。
二、索引策略。涵盖 B-Tree、Hash、GIN、GiST、BRIN 索引类型,以及标准索引、复合索引(列顺序重要)、部分索引、表达式索引、覆盖索引(INCLUDE)、全文检索索引、JSONB 索引的建法。
三、查询优化模式。避免 SELECT *;让 WHERE 条件可命中索引;先过滤再连接;消除 N+1(用 JOIN 或批量查询);大偏移分页改为游标分页;COUNT 与 GROUP BY 优化;相关子查询改写为 JOIN 加聚合或窗口函数;使用 CTE 提升可读性;批量 INSERT/UPDATE,必要时用 COPY 或临时表。
四、进阶技术与维护。物化视图(含并发刷新)、按范围分区、索引提示、并行查询、ANALYZE、VACUUM、REINDEX,以及通过 pg_stat_statements、pg_stat_user_tables、pg_stat_user_indexes 监控慢查询、缺失索引和未使用索引。
使用方式:以 PostgreSQL 为主,同时涉及 MySQL/MariaDB 的相关语法(如 USE INDEX 提示);资源包含 PostgreSQL 与 MySQL 优化指南、查询计划分析深读、索引策略与优化检查清单,以及识别慢查询和生成索引建议的 SQL 脚本。
限制与注意事项:避免过度索引,索引会拖慢写入;注意未使用索引与缺失索引;隐式类型转换、OR 条件、前导通配符 LIKE '%abc'、WHERE 中函数调用都会阻碍索引使用,函数调用需配合函数索引;优化效果取决于具体数据分布与版本,需结合真实执行计划验证;以上内容源自公开技能资料,未提供具体收费、价格与平台支持范围。