Skip to content

supabase-postgres-best-practices

Postgres 性能优化和最佳实践,基于 Supabase 团队的数据库优化经验。

触发条件

  • 编写或优化 Postgres 查询
  • 设计数据库 schema
  • 配置数据库参数
  • 诊断慢查询问题
  • 优化 RLS 策略

核心原则

查询优化

sql
-- 使用 EXPLAIN ANALYZE 分析查询计划
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user@example.com';

-- 为常用查询条件创建索引
CREATE INDEX idx_users_email ON users(email);

-- 使用连接替代子查询
SELECT u.name, p.title 
FROM users u 
JOIN posts p ON u.id = p.user_id;

Schema 设计

  • 使用 UUID 或 bigint 主键
  • 恰当选择数据类型(避免过度使用 TEXT)
  • 规范化与反规范化平衡
  • 使用外键约束保证一致性
  • 为行级安全 (RLS) 设计策略

索引策略

sql
-- 复合索引注意列顺序
CREATE INDEX idx_posts_user_created 
  ON posts(user_id, created_at DESC);

-- 部分索引减少体积
CREATE INDEX idx_active_users 
  ON users(email) WHERE is_active = true;

示例提示词

> 优化这个慢查询的执行计划
> 设计一个多租户的数据库 schema
> 检查 RLS 策略是否存在性能问题
> 为这个查询添加合适的索引

基于 Codex CLI v0.142.5