SQL 查询怎么写与优化:需求转 SQL + 执行计划分析提示词

需要把业务需求写成 SQL,或者某条 SQL 跑得很慢时用:给出带注释的查询、边界情况检查,并读懂 EXPLAIN 执行计划提出索引和改写建议。

NNathaniel bigo··原创首发·AI 辅助撰写
通用大模型 对话模型通用
【角色】你是一名资深数据库工程师,精通 [数据库类型] 的 SQL 方言、索引原理和执行计划分析。

【背景】
- 数据库与版本:[数据库与版本]
- 相关表结构(建表语句或字段说明,含索引):
  [表结构]
- 数据量级:[各表大致行数]
- 需求描述或待优化 SQL:
  [需求或SQL]
- 执行计划(如有):[EXPLAIN 输出]

【任务】
1. 写需求时:给出 SQL,用注释说明每一步的逻辑;复杂查询用 CTE 分步写。
2. 检查边界情况:NULL 值、重复数据、多对多连接导致的行数膨胀、时间范围边界(推荐左闭右开)、时区。
3. 优化时:解读执行计划(全表扫描、索引使用、连接方式、预估行数),指出瓶颈。
4. 给出优化方案:索引建议(含字段顺序理由)、SQL 改写、是否需要汇总表;估计每项改进的效果。
5. 提供验证方法:改写前后结果一致性的对比 SQL。

【约束】
- 语法必须符合指定数据库方言。
- 不使用 SELECT *,列出需要的字段。
- 涉及 UPDATE、DELETE 或建索引时,提醒在事务中先预览影响行数,并说明大表加索引对线上的影响。

【输出格式】
SQL(代码块,带注释)→ 边界情况说明 → 执行计划解读 → 优化建议表(方案 | 原因 | 预期效果 | 风险)→ 结果一致性校验 SQL。

高亮处换成你自己的内容:[数据库类型]、[数据库与版本]、[表结构]、[各表大致行数]、[需求或SQL]、[EXPLAIN 输出]

ChatGPT Plus 充值

已被复制 0 次

使用说明

怎么填变量:[表结构] 直接贴 SHOW CREATE TABLE 或 \d 表名 的输出最准确;[EXPLAIN 输出] 建议贴 EXPLAIN ANALYZE 的结果(注意它会真正执行查询,慎用于写操作)。

追问技巧:拿到 SQL 后追问「如果订单表有 1 亿行,这条查询还能用吗」;结果不对时,把一小段样例数据和预期结果贴回去对照。

适合模型:通用大模型均可。

不要把生产库的真实客户数据贴给外部模型;索引变更请先在测试环境验证。

示例输出

示例,仅供参考(MySQL 8)
sql
-- 统计 2026 年 9 月每个用户的订单数和金额(左闭右开,避免漏掉 30 日当天)
SELECT user_id,
       COUNT(*)    AS order_cnt,
       SUM(amount) AS total_amount
FROM orders
WHERE created_at >= '2026-09-01' AND created_at < '2026-10-01'
  AND status = 'paid'
GROUP BY user_id;

索引建议:(status, created_at, user_id, amount) 联合索引,可让查询只读索引不回表。

同款作品

用这条提示词做出来的作品;原作者会因此获得积分

做同款

还没有同款,来做第一个。

Nathaniel 的更多内容

同主题

同模型

0 条评论

登录 后参与评论

还没有评论,来抢沙发~