用途:该技能用于系统性优化 SQL 查询,把慢查询改造为高性能操作,适用于排查慢查询、设计高性能数据库模式、优化应用响应时间、降低数据库负载与成本、提升大数据集可扩展性、分析 EXPLAIN 计划、实现高效索引以及解决 N+1 查询问题。
主要能力:理解与解读查询执行计划,常用命令如 EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';、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(全文检索、数组、JSONB)、GiST(几何与全文检索)、BRIN(大表相关数据),并给出标准索引、复合索引、部分索引、表达式索引、覆盖索引及全文与 JSONB 索引的建法示例,如 CREATE INDEX idx_users_lower_email ON users(LOWER(email));。
优化模式:避免 SELECT *;WHERE 中避免函数阻碍索引,如 LOWER(email) 需配合函数索引;JOIN 先过滤再连接,避免笛卡尔积后过滤。维护与监控方面包含 ANALYZE、VACUUM ANALYZE、VACUUM FULL、REINDEX,以及借助 pg_stat_statements 找出平均耗时最高的查询、通过 pg_stat_user_tables 与 pg_stat_user_indexes 定位缺失或未使用的索引。
限制与注意事项:索引需选择性创建,过多会拖慢写操作;未使用索引浪费空间并影响写入;缺失索引导致全表扫描;隐式类型转换、OR 条件、前导通配符 LIKE '%abc'、WHERE 中的函数都会妨碍索引使用。资料中未提供具体性能提升数值、收费信息或安装命令。