自己写了个存储过程, 每天定时处理日志表, 需要一条一条去取. 主键 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.
然后我试了一天的数据, 总时间直接快了五倍...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.