先看看示例
作者提供的示例,实际效果取决于你的输入和使用工具。
输入
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