适用场景
- 给大模型调用记录表做按时间的统计查询越来越慢
- 要在不锁表的前提下给千万级日志表加索引
- 需要一份能直接交给 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 验证语句。 ---