Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.9k views
in Technique[技术] by (71.8m points)

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...