mysql 中遍历数据库数据, 变个写法速度提升真多.

2017-06-28 14:40:48 +08:00
 snail00

自己写了个存储过程, 每天定时处理日志表, 需要一条一条去取. 主键 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.
然后我试了一天的数据, 总时间直接快了五倍...

8442 次点击
所在节点    MySQL
21 条回复
chenqh
2017-06-28 19:07:58 +08:00
感觉是 max 和 count 导致的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/371684

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX