以下那种方式处理全量数据性能更佳呢?

2022-11-30 12:11:51 +08:00
 hackingwu

EXPLAIN SELECT * FROM api_definition order by id LIMIT 1000,100;

    EXPLAIN SELECT * FROM api_definition WHERE id > '1837ec5e-a216-4ead-854d-4' ORDER BY id LIMIT 100;
    以下那种方式处理全量数据性能更佳呢?
    或者又没更好的方式?
1613 次点击
所在节点    程序员
9 条回复
v2wtf
2022-11-30 12:13:47 +08:00
你这不是分页查询吗?算哪门子的全量?
hackingwu
2022-11-30 13:49:53 +08:00
@v2wtf 。。。循环一下。你一般怎么处理全量数据的?
lmshl
2022-11-30 14:25:53 +08:00
我都是用第二个语句,但是不加 limit 直接用 jdbc stream ,控制好每个 fetch size 就行。
如果需要从崩溃恢复,再加 updateTime > [最后处理的时间]
agmtopy
2022-11-30 14:33:11 +08:00
你这个 id 是自增的嘛.是的话用 2 稍微好一点
PythonYXY
2022-11-30 14:48:41 +08:00
具体使用场景是什么呢?
james2013
2022-11-30 15:02:30 +08:00
我采用的是第 1 种方法,从单表上亿数据查询过去 24 小时的数据进行处理
刚开始分页是 100,到后面分页查询越来越慢
后来分页改成 500,1000,2000
最后改成 3000,效果很好...
liuhuan475
2022-11-30 17:26:04 +08:00
between and 也可以吧,如果是多台实例,可以把分页的 start id 和 end id 做成任务,通过消息队列分发给别的实例,最后瓶颈可能在数据库的 io 上面
Maboroshii
2022-11-30 20:26:38 +08:00
第二种, 第一种分页后面好慢
noparking188
2022-11-30 21:11:09 +08:00
你也不说 id 加索引没有
加索引且有序,第二种效率可以的,我以前都这样扫全表,单表一千多万没问题

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

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

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

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

© 2021 V2EX