提示词模板 / 编程
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 验证语句