请生成一条用于指导dba创建高效索引的提示词:针对type=all或type=index且rows>10000的表及using filesort/using temporary操作,设计联合索引与覆盖索引,合理设置前缀长度。 请重写该查询,使其能天然利用按时间分区的物理结构,避免全表扫描,同时保持语义等价;若含子查询或join超3表,须拆解为两阶段查询。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Claude把一条SQL慢查询自动提炼成两条不同角度的优化思路提示词,一条聚焦执行计划与索引缺失,另一条侧重业务逻辑与数据访问模式重构。
方向一:从执行计划反推索引与结构问题
在Prompt中明确要求Claude先模拟EXPLAIN输出关键瓶颈点,再据此生成提示词。
第一步:把原始SQL粘贴进Prompt,并附加一句指令:“请基于MySQL 8.0默认优化器行为,模拟该SQL最可能的EXPLAIN结果,重点关注type、key、rows、Extra字段。”
第二步:要求它提取出执行计划中【type=ALL或type=index且rows>10000】的表,以及【Extra包含Using filesort或Using temporary】的操作节点。
第三步:用“请生成一条用于指导DBA创建高效索引的提示词”收尾,限定输出格式为单句,不解释,不举例,必须含“联合索引”“覆盖索引”“前缀长度”三个关键词中的至少两个。
方向二:从业务语义重构数据访问路径
这条提示词不看执行计划,只读SQL字面含义和常见业务场景。
方法一:让Claude识别SQL中的WHERE条件字段与SELECT字段,判断是否存在“高频筛选低频返回”现象——比如WHERE用user_id=?但SELECT返回了blob字段或15个列。
方法二:强制它假设该SQL每天被调用超5000次,且90%请求只关心最新7天数据,然后生成提示词:“请重写该查询,使其能天然利用按时间分区的物理结构,避免全表扫描,同时保持语义等价。”
注意:若原始SQL含子查询或JOIN多于3张表,提示词中必须出现“拆解为两阶段查询”字样。










