跳到主要内容
哒哒星球DADA PLANET

Skill · 已公开版本

supabase-postgres-best-practices · Postgres 查询与表结构优化

从查询、索引、连接和权限等方面检查数据库设计,为具体问题给出可验证的改进建议。

先看看示例

作者提供的示例,实际效果取决于你的输入和使用工具。

输入

orders(id, tenant_id, created_at, total)。查询 tenant_id=42,按 created_at DESC,id DESC,每页 20 条,OFFSET 已达 10000;尚无执行计划。

输出

编辑示例 · 未运行

-- 下一页游标分页草案,游标来自上一页末行
SELECT id, created_at, total FROM orders
WHERE tenant_id = 42
  AND (created_at, id) < ($1, $2)
ORDER BY created_at DESC, id DESC LIMIT 20;

候选索引:(tenant_id, created_at DESC, id DESC)。
先在测试库比较原查询与新查询计划及结果;检查 created_at 的空值规则。当前缺少执行计划,不能认定瓶颈已被证实。

方法说明

从查询、索引、连接和权限等方面检查数据库设计,为具体问题给出可验证的改进建议。

具体任务

为租户订单分页提出优化草案:从查询、索引、连接和权限等方面检查数据库设计,为具体问题给出可验证的改进建议。

审查表结构与访问策略:检查类型、约束、索引和租户可见性,并按受影响范围安排验证。

必需材料

目标 SQL 或数据库变更

相关表结构与 Postgres 版本

可选材料

EXPLAIN (ANALYZE, BUFFERS)

租户权限与数据规模

使用门槛

能在隔离环境验证 SQL,理解索引与 RLS 对实际业务的影响。

这个 Skill 额外提供的方法

按查询、连接、数据安全和结构设计分类定位,附能验证建议的具体步骤。

编辑示例(未运行)

为租户订单分页提出优化草案

任务:请根据下面的示例材料完成为租户订单分页提出优化草案,把判断依据和待确认事项写清楚。

输入:
orders(id, tenant_id, created_at, total)。查询 tenant_id=42,按 created_at DESC,id DESC,每页 20 条,OFFSET 已达 10000;尚无执行计划。

结果片段:
```sql
-- 下一页游标分页草案,游标来自上一页末行
SELECT id, created_at, total FROM orders
WHERE tenant_id = 42
  AND (created_at, id) < ($1, $2)
ORDER BY created_at DESC, id DESC LIMIT 20;
```

候选索引:(tenant_id, created_at DESC, id DESC)。
先在测试库比较原查询与新查询计划及结果;检查 created_at 的空值规则。当前缺少执行计划,不能认定瓶颈已被证实。

按查询、连接、数据安全和结构设计分类定位,附能验证建议的具体步骤。 该片段是编辑示例,用于说明交付形态,未运行上游技能。

首次任务

请使用「Postgres 查询与表结构优化」完成「为租户订单分页提出优化草案」。
任务要求:按查询、连接、数据安全和结构设计分类定位,附能验证建议的具体步骤。

我的必需材料:
- 目标 SQL 或数据库变更:[请填写或粘贴]
- 相关表结构与 Postgres 版本:[请填写或粘贴]

请基于上述实际材料输出:问题清单、修改建议及验证步骤。缺少依据的地方单列为待确认,不编造事实;未执行的操作或测试明确标为未执行。

验收要求:
1. 分页无重复遗漏且排序稳定。
2. 用同一数据和条件比较计划与结果。
3. 跨租户访问验证符合既有 RLS 规则。

验收方法

分页无重复遗漏且排序稳定

用同一数据和条件比较计划与结果

跨租户访问验证符合既有 RLS 规则

依赖与准备

需支持 Skill 的代码宿主与完整 references 规则目录;数据库连接不是必需输入,直接分析脱敏 SQL 也可。运行验证需隔离 Postgres、最小权限连接和明确数据边界。

使用边界

建议需结合真实执行计划,不能保证加索引就提速。

迁移、RLS、写入和 EXPLAIN ANALYZE 可能影响数据或执行语句,生产操作必须单独授权。

排错

加索引后仍慢:查看过滤比例、回表、排序与连接等待,不连续叠加重复索引。

新分页结果丢行:检查复合游标、相同时间戳和空值顺序是否与 ORDER BY 一致。

固定来源

https://github.com/supabase/agent-skills/blob/544bfc56c89afe2b87b20017a59b2c6e9502a1fb/skills/supabase-postgres-best-practices/SKILL.md