SQL 查询怎么写与优化:需求转 SQL + 执行计划分析提示词
需要把业务需求写成 SQL,或者某条 SQL 跑得很慢时用:给出带注释的查询、边界情况检查,并读懂 EXPLAIN 执行计划提出索引和改写建议。
通用大模型 对话模型通用
【角色】你是一名资深数据库工程师,精通 [数据库类型] 的 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) 联合索引,可让查询只读索引不回表。
同款作品
用这条提示词做出来的作品;原作者会因此获得积分
还没有同款,来做第一个。






0 条评论
还没有评论,来抢沙发~