sql 排序后取数据,OFFSET 的值是根据排序的 ID

闲影
  • 6

我有一条 SQL, 请问大佬们怎么优化, 或者说有什么更好的写法; 这里的优化指的是代码简洁, 并非查询速度优化;

PostgreSQL

伪代码

select * from table 
where 条件
order by time
limit 10 
OFFSET ( 
    -- 主要用于获取 ID 在排序后序号
    select 序号 from table 
    where id=参数  
    order by time 
)

OFFSET的SQL与外层 SQL 除了查询数据不同, 其余完全一模一样,请问如何优化呢?

如果你感兴趣为什么有这条 SQL

通常分页使用 limit,page 直接给出了 OFFSET
但是会数据增加时,翻页可能会造成和上一页有重复数据

尝试解决方案是, 通过当前页最后一条数据的 ID 查询下一页

回复
阅读 439
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏