在xxxxx项目中有一个查询“用户近7天积分变动明细”的接口响应超过3秒。定位开启MySQL慢查询日志发现一条SELECT * FROM points_log WHERE user_id ? AND create_time BETWEEN ? AND ?。分析使用EXPLAIN发现typeALL全表扫描rows扫描了20万行。解决创建联合索引(user_id, create_time)并改写查询只返回必要字段避免SELECT *。优化后typeref扫描行数下降到几十行响应时间降到50ms。同时我将该经验沉淀到团队开发规范中要求所有范围查询必须带上索引字段。ps:ALL、index、range、ref、eq_ref、const 这几个常见 type 的优先级。typeref 是 MySQL 执行计划里的访问类型代表非唯一索引的等值匹配。