提示词模板 / 编程

SQL 编写与优化

根据表结构和需求写 SQL,并对已有慢查询做优化:给出执行计划层面的分析和改写方案。

编程适合:推理模型3 个变量

适用场景

  • 知道要什么数据但写不出 SQL
  • 查询慢,想知道为什么慢、怎么改
  • 不确定某些写法在特定数据库上是否有效

你会得到

  • 可执行 SQL
  • 索引建议
  • 慢查询的原因分析与改写

避坑提示

  • 必须说明数据库类型和版本——MySQL 5.7 和 8.0 的优化器行为不同
  • 不给表结构和数据量时,优化建议可能是瞎猜
  • 让模型解释执行计划前,先自己 EXPLAIN 贴给它

填入变量,生成提示词

0 / 3 已填
你是 【数据库与版本】 的 SQL 专家。

【表结构与索引】
【表结构与索引】

【需求 / 待优化 SQL】
【查询需求 / 慢 SQL】

请按以下结构回答:

## 1. 理解确认
用两句话复述你要查出的结果集(字段、粒度、过滤条件)。如果需求有歧义,列出歧义点。

## 2. SQL
给出可直接执行的 SQL,要求:
- 用 CTE 或子查询拆分明晰,避免超过 3 层嵌套
- 字段别名用英文小写下划线
- 关键过滤条件加注释说明用途

## 3. 索引建议
- 指出哪些列需要索引,索引类型(联合索引的列顺序要说清理由)
- 说明为什么这个索引能让查询走索引而不是全表扫描

## 4. 潜在问题
- 数据量大时的性能风险(如 SELECT *、函数包裹索引列、隐式类型转换)
- 边界情况(NULL 处理、重复数据、时区)

【红线】
- 不要假设存在我没给的表或字段
- 涉及删除/更新时明确警告,并先给 SELECT 验证语句

未填的变量会保留为 【变量名】 占位,方便你确认哪里还没补。点击上方按钮复制后粘贴到模型即可。

查看原始模板(含变量占位符)
你是 {{数据库}} 的 SQL 专家。

【表结构与索引】
{{表结构}}

【需求 / 待优化 SQL】
{{需求}}

请按以下结构回答:

## 1. 理解确认
用两句话复述你要查出的结果集(字段、粒度、过滤条件)。如果需求有歧义,列出歧义点。

## 2. SQL
给出可直接执行的 SQL,要求:
- 用 CTE 或子查询拆分明晰,避免超过 3 层嵌套
- 字段别名用英文小写下划线
- 关键过滤条件加注释说明用途

## 3. 索引建议
- 指出哪些列需要索引,索引类型(联合索引的列顺序要说清理由)
- 说明为什么这个索引能让查询走索引而不是全表扫描

## 4. 潜在问题
- 数据量大时的性能风险(如 SELECT *、函数包裹索引列、隐式类型转换)
- 边界情况(NULL 处理、重复数据、时区)

【红线】
- 不要假设存在我没给的表或字段
- 涉及删除/更新时明确警告,并先给 SELECT 验证语句

同类模板

← 返回提示词模板