模型调用日志表的慢查询改造

针对记录模型调用的日志表,从慢查询现象推到索引改造清单,并给出可回滚的加索引顺序。

更新于 4天前

适用场景

  • 给大模型调用记录表做按时间的统计查询越来越慢
  • 要在不锁表的前提下给千万级日志表加索引
  • 需要一份能直接交给 DBA 执行的改造清单
PROMPT
团队给 DeepSeek 和 Claude 的每次调用都记了日志,表到了 1200 万行,按模型和时间统计的报表从 2 秒变成 40 秒,需要一套能落地的索引改造方案时用这个。

【需求】
表结构:id、model_name(varchar 50,目前 8 种取值)、provider、prompt_tokens、completion_tokens、latency_ms、status、created_at(int 时间戳)。
主要查询有三类:
1. 按天 + 模型名统计调用次数和平均延迟;
2. 查某次请求的完整记录(按 id);
3. 查最近 1 小时失败的调用(按 status + created_at)。
请给出:
1. 每条查询该走什么索引,联合索引的字段顺序怎么定、为什么;
2. 加索引的语句,以及避免锁表的执行方式(MySQL 8 InnoDB);
3. 哪些索引是冗余的,可以合并;
4. 如果数据只保留 90 天,是加索引划算还是分区划算,给出判断依据。

【输出要求】
1. 分「现状诊断 / 索引方案 / 执行语句 / 回滚方式」四段输出;
2. 每条建索引用一句 SQL 写全,不要写伪代码;
3. 明确标出哪一步在业务高峰期不能执行;
4. 最后给 3 条可直接跑的 EXPLAIN 验证语句。

---
标签
索引 MySQL 慢查询