V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
rrzwxq
V2EX  ›  问与答

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

  •  
  •   rrzwxq · 2020-12-31 14:44:36 +08:00 · 943 次点击
    这是一个创建于 1422 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在有一个查询接口,接口有一条主 SQL 查询主要的数据,把数据查询出来之后,还要根据这个数据再去查询不同的表
    然后根据返回的值来判断这个数据是否是想要的,如果是不想要就需要剔除,

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


    请问这种没办法一条 SQL 写好的查询,一般有没有什么好的分页方式?
    3 条回复    2020-12-31 16:42:09 +08:00
    lpts007
        1
    lpts007  
       2020-12-31 14:55:35 +08:00
    1. 总数据量不大,全取出来,后端手动分页。优化,缓存
    2. 总数据量大,循环取,直到数量达到目标值。优化,连续跳页时回传上次最高 id
    rrzwxq
        2
    rrzwxq  
    OP
       2020-12-31 15:12:30 +08:00
    @lpts007 请问,再总数据量大的情况下,那这样我如何能够获取到数据的总条数呢? 因为第一条 SQL 查询出来的总数是不准确的
    LemonK
        3
    LemonK  
       2020-12-31 16:42:09 +08:00
    跳页使用上次 id 就不用计算数据总数,这是常用解决方案。如果数据几千万+带复杂筛选还必须算总数页码,那 OLTP 做不了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5267 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:20 · PVG 16:20 · LAX 00:20 · JFK 03:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.