自己写了个存储过程, 每天定时处理日志表, 需要一条一条去取. 主键 id 是 int 自增.
以前是这样的, 统计总数再用 limit 取
SELECT count(1) into count_sum from t_day_log_bak_1;
SELECT
x,x,x,x
INTO
@x,@x,@x,@x
FROM
t_day_log_bak_1
LIMIT ?,1;
改了之后是这样的, 获取最大的 id, 再去用 id 遍历.
SELECT max(id) into count_sum from t_day_log_bak_1;
SELECT
x,x,x,x
INTO
@x,@x,@x,@x
FROM
t_day_log_bak_1
where id = ?;
本地测试 10000 条数据, 时间从 35.352s 缩短到 11.212s.
然后我试了一天的数据, 总时间直接快了五倍...