Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
lang lang/sql/select/partition-required.md medium

sql-partition-required

大表 SELECT 必带分区字段(按数据规模启用,默认预留)。Use when 写 SQL / 迁移脚本 / 评审涉及 `partition-required` 的 PR。

partition分区big table
paths
  • **/migrations/**/*.py
  • **/*.sql

SQL · 大表必带分区字段

状态

数据规模未到必须分区表的程度(articles / documents / orders 等表行数 < 10M)时本规则为未来扩展预留

规则(达到规模后启用)

分区表的 SELECT 必须在 WHERE 含分区键,否则触发全分区扫描。

示例分区表

例如 request_logs(按 partition_dt 月分区):

-- ❌ 全分区扫描(扫所有月份)
SELECT count(*) FROM request_logs WHERE user_id = 123;

-- ✅ 限定分区
SELECT count(*) FROM request_logs
WHERE partition_dt BETWEEN '20260501' AND '20260524'
  AND user_id = 123;

命名约定

分区字段统一 partition_dt 列,类型 VARCHAR(8)yyyyMMdd

何时引入分区

触发阈值
request_logs 总行数 > 5M 或 单月 > 1M
events 单月 > 100K
files 总行数 > 10M

引入后这条规则升级为 hook 强制校验。

自检(当前阶段)

  • [ ] 关心的查询是否在已分区表上?
  • [ ] 如是,WHERE 是否含 partition_dt

相关