DeepSeek精准诊断MySQL慢查询需提供真实EXPLAIN结果、慢日志数据及明确修改边界;必须显式指出Using filesort/Using temporary,限定仅优化SQL写法或复合索引,禁改表结构与hint,并嵌入业务约束。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
你想让deepseek精准诊断mysql慢查询却总得到泛泛而谈的“加索引”建议,根本原因是提示词没把真实执行计划、数据量级和业务约束塞进去——模型看不到你的表结构、查不到你的慢日志,只能靠猜。直接贴出EXPLAIN结果的问法
第一步:在MySQL客户端执行 EXPLAIN FORMAT=TRADITIONAL SELECT ...,复制完整输出(含id、select_type、table、type、possible_keys、key、rows、Extra等全部列);
第二步:把输出粘贴进提示词,开头就写“以下为真实执行计划:”,后面紧跟EXPLAIN结果;
第三步:补一句硬约束:“只允许修改SQL写法或添加复合索引,不得改表结构、不许用hint、不引入临时表”。
这一步必须做:【EXPLAIN结果里若出现Using filesort或Using temporary,必须在提示词中显式指出】,否则模型会忽略这个关键瓶颈信号。
用慢日志片段替代功能描述
方法一:从slow_query_log中截取一段真实日志,例如:
“# Time: 2026-06-22T14:23:18.123
# User@Host: app[app] @ 10.2.3.4 [10.2.3.4]
# Query_time: 3.218745 Lock_time: 0.000123 Rows_sent: 1 Rows_examined: 124890”
方法二:直接写明压力场景:“并发200请求时,该SQL P95延迟从80ms飙升至2.1s,pt-query-digest显示Rows_examined/Rows_sent比值达12万”。
模型对数字比对文字敏感得多——它看到“124890行扫描只返回1行”,立刻聚焦于WHERE条件失效或索引未覆盖,不会空谈“优化查询逻辑”。
限定修改边界的三段式写法
① 明确圈定可动范围:“只允许调整以下三处:
— 第7行WHERE子句中的日期范围写法
— 第12行ORDER BY字段顺序
— 第15行LIMIT偏移量计算方式”;
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
② 锁死不可碰区域:“保留原始JOIN顺序、不删改任何LEFT JOIN、不触碰GROUP BY后的HAVING条件”;
③ 嵌入业务铁律:“订单表created_at字段已建BTREE索引,但下游风控系统要求所有查询必须包含tenant_id = ?参数,否则拦截”。
这三步做完,模型就无法用“建议你分库分表”来搪塞——它被钉死在你划出的15行代码里动手术。
红蓝军对抗式提问
红军(你的现状):“当前用SELECT * FROM orders WHERE status IN ('paid','shipped') AND created_at > '2026-01-01'查近半年订单,索引已建(status,created_at),但EXPLAIN显示key_len=2,实际扫描83万行。”
蓝军(挑刺):“第一,status字段只有3个枚举值,B+树索引区分度极低,IN操作导致索引失效;第二,created_at范围过大,索引下推失效;第三,SELECT * 强制回表,IO放大3倍。”
终局裁定需包含:最终采用的SQL改写方案 + 回滚预案(例如“若新SQL在高峰期引发锁等待,立即切回旧语句并启用覆盖索引”)。


















