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

发布于 2022-09-12 13:52:27 字数 462 浏览 39 评论 0

我有一条 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 查询下一页

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文