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 條評論
還沒有評論,來搶沙發~