SuperAPI AI 工具集

sql-optimization-patterns

数据与分析

查看项目

更新于 10-15 21:38

技能介绍

用途:将慢速数据库查询系统化地优化为快速操作,适用于排查慢查询、设计高性能数据库模式、优化应用响应时间、降低数据库负载与成本、提升大数据集可扩展性、分析 EXPLAIN 计划、实现高效索引以及解决 N+1 查询问题。

主要能力:一是查询执行计划分析,理解 EXPLAIN 输出是优化基础,可关注 Seq Scan(大表通常慢)、Index Scan(较好)、Index Only Scan(最佳)、Nested Loop、Hash Join、Merge Join 等连接方式,以及 Cost、Rows、Actual Time 等指标;PostgreSQL 示例:EXPLAIN SELECT * FROM users WHERE email = 'user@example.com';、EXPLAIN ANALYZE、EXPLAIN (ANALYZE, BUFFERS, VERBOSE)。二是索引策略,索引类型包括默认的 B-Tree(等值与范围查询)、Hash(仅等值)、GIN(全文检索、数组、JSONB)、GiST、BRIN;支持标准、复合(列顺序重要)、部分、表达式、覆盖、全文与 JSONB 索引。三是查询优化模式,如避免 SELECT *、高效使用 WHERE、先过滤再 JOIN、避免函数阻止索引、注意隐式类型转换与前置通配符 LIKE 等。

使用方式:在 PostgreSQL 中通过 EXPLAIN/EXPLAIN ANALYZE 分析查询,按需创建索引,并利用 pg_stat_statements、pg_stat_user_tables、pg_stat_user_indexes 定位慢查询、缺失索引和未使用索引;更多详细模式与示例见 references/details.md。

最佳实践与限制:索引要选择性创建,过多索引会拖慢写入;定期运行 ANALYZE、VACUUM、REINDEX(VACUUM FULL 会锁表);使用合适数据类型、合理范式化、应用层缓存与连接池。常见陷阱包括过度索引、未使用索引、缺失索引、隐式类型转换、OR 条件、前置通配符 LIKE 以及 WHERE 中使用函数。该技能主要面向 PostgreSQL 体系,其他数据库的 EXPLAIN 语法可能不同。