Ash*_*win 2 postgresql view select
我有一个疑问:
select qid,ansid,ans from table1 where askerid='something'
Run Code Online (Sandbox Code Playgroud)
此查询可以检索许多行。但我想一次只显示 50 行,然后如果用户单击more,则应检索接下来的 50 行。我想到了这样的查询:
select qid,ansid,ans
from table1
where askerid='something'
limit 100
minus
select qid,ansid,ans
from table1
where askerid='something'
limit 50
Run Code Online (Sandbox Code Playgroud)
我想知道这是否是一个良好的查询性能和替代查询,其性能优于上述查询。
正确的方法是使用LIMITand OFFSET。
请注意,为了使其正常工作,您的查询将需要一个ORDER BY子句,以便每次以相同的顺序获取行。
您的第一个查询是:
SELECT qid,ansid,ans
FROM table1
WHERE askerid='something'
LIMIT 50 OFFSET 0
Run Code Online (Sandbox Code Playgroud)
第二个查询的OFFSET值为 50,因为您想跳过前 50 行:
SELECT qid,ansid,ans
FROM table1
WHERE askerid='something'
LIMIT 50 OFFSET 50
Run Code Online (Sandbox Code Playgroud)
该ORDER BY子句要在WHEREandLIMIT子句之间添加。
Postgres 文档在这里,并提到这对于大OFFSET值可能没有性能。如果该ORDER BY列已编入索引,那么对于小型数据集就可以了。
| 归档时间: |
|
| 查看次数: |
4815 次 |
| 最近记录: |