请问一个查询的接口没办法一条 SQL 写出来,需要执行复杂过滤逻辑才能把数据返回给前端,请问这种怎么分页?

2020-12-31 14:44:36 +08:00
 rrzwxq
现在有一个查询接口,接口有一条主 SQL 查询主要的数据,把数据查询出来之后,还要根据这个数据再去查询不同的表
然后根据返回的值来判断这个数据是否是想要的,如果是不想要就需要剔除,

所以可能开始查出来的数据可能有 10 条,但是经过后面的过滤逻辑之后可能只剩下几条了


请问这种没办法一条 SQL 写好的查询,一般有没有什么好的分页方式?
842 次点击
所在节点    问与答
3 条回复
lpts007
2020-12-31 14:55:35 +08:00
1. 总数据量不大,全取出来,后端手动分页。优化,缓存
2. 总数据量大,循环取,直到数量达到目标值。优化,连续跳页时回传上次最高 id
rrzwxq
2020-12-31 15:12:30 +08:00
@lpts007 请问,再总数据量大的情况下,那这样我如何能够获取到数据的总条数呢? 因为第一条 SQL 查询出来的总数是不准确的
LemonK
2020-12-31 16:42:09 +08:00
跳页使用上次 id 就不用计算数据总数,这是常用解决方案。如果数据几千万+带复杂筛选还必须算总数页码,那 OLTP 做不了。

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

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

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

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

© 2021 V2EX