首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >这个postgres分页sql的性能可以提高吗?

这个postgres分页sql的性能可以提高吗?
EN

Stack Overflow用户
提问于 2019-06-04 04:55:35
回答 1查看 32关注 0票数 0

我有一个超文本传输协议客户端,希望简单地在查询字符串中发送一个偏移量来处理分页,例如http://foo.com/cars?offset=50

作为响应,他们得到一个模型,该模型包含项目总数和一个数据数组。{"totalitemcount":100, "data":[{"id":1,"name":"Porsche"},{"id":2, "name":"Ferrari"}]}

我用来做这件事的SQL如下:

代码语言:javascript
复制
select count(items.id) over() as totalitemcount, items.* from ( 
      select * from cars 
      order by id
      ) as items 
limit 20 
offset 50

我不确定这种方法的性能如何,我想知道在上面的限制下,是否可以做出改变来改善它?

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 15:05:59

要做到这一点,最好的方法是首先像这样查询:

代码语言:javascript
复制
SELECT * FROM cars 
ORDER BY id
LIMIT 20;

然后记住最后一个id

使用检索下一页

代码语言:javascript
复制
SELECT * FROM cars 
WHERE id > [the id you remembered]
ORDER BY id
LIMIT 20;

诸若此类。

这样,你不会得到结果的总数,但你可以提高效率。

你真的需要确切的总数吗?如果一个近似值就足够了,那么在this blog post的末尾尝试一下这个想法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56434436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档