☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
要让豆包准确给出sql优化建议,必须明确告知表的数据量级(如“用户表 user_info 约 850 万行”)、关键字段分布特征(如 status 取值少、create_time 近3个月占72%)、多表关联基数(如 order_detail 平均每 order_id 对应1.8条记录),并提供真实索引结构(推荐 show create table 中 key 片段)及待优化sql的执行频率、响应时间和 explain 关键信息。
你想让豆包准确给出sql优化建议,必须让它清楚知道表里有多少数据、哪些字段建了索引,否则它可能推荐一个在千万级表上会拖垮数据库的方案。
明确告诉豆包表的数据量级
第一步:直接写明行数,用“约”“近”“超”等字眼避免虚假精确——比如“用户表 user_info 约 850 万行”,不要写“user_info 表很大”。【不能只说‘数据量大’或‘数据量小’,豆包无法量化】
第二步:补充关键字段的分布特征。例如:“其中 status 字段只有 3 个取值(0/1/2),但 create_time 范围跨度 5 年,且近 3 个月数据占总量 72%。” 这能帮豆包判断是否适合加时间分区或函数索引。
第三步:如果涉及多表关联,说明各表主从关系和连接基数。例如:“订单表 order_detail 关联订单主表 order_header,平均每个 order_id 对应 1.8 条明细记录。”
清晰描述现有索引结构
方法一:用 SQL SHOW CREATE TABLE 输出片段(最推荐)
复制粘贴实际执行结果中 KEY 部分,例如:KEY idx_status_ctime (status,create_time)、KEY uk_mobile (mobile) UNIQUE。这比口头描述“status 和 create_time 有联合索引”更可靠。
方法二:手动列出时按规范格式写
写成“索引名(字段1, 字段2 ASC, 字段3 DESC)[类型]”,例如:
“idx_user_type_level(user_type, level DESC)[B-tree]”
“uk_order_no(order_no)[唯一]”
“ft_title(title)[全文]”
方法三:指出缺失但业务高频使用的组合
例如:“查询常带 WHERE category = ? AND is_deleted = 0 ORDER BY sort_order LIMIT 20,但目前没有任何索引覆盖这三个字段。”
把SQL和上下文一起给豆包
第一步:贴出待优化的原始SQL,保留真实表名和字段名,不要用 t1/t2 替代。
第二步:说明执行频率和典型响应时间
例如:“该SQL每天执行 2.3 万次,P95 响应时间 1420ms,高峰期常触发慢查询告警。”
第三步:附上 EXPLAIN 结果关键行
只截取 type、key、rows、Extra 四列,例如:
type: ALL → key: NULL → rows: 3276841 → Extra: Using where; Using filesort











