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)
我想知道这是否是一个良好的查询性能和替代查询,其性能优于上述查询。
正确的方法是使用LIMIT
and 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
子句要在WHERE
andLIMIT
子句之间添加。
Postgres 文档在这里,并提到这对于大OFFSET
值可能没有性能。如果该ORDER BY
列已编入索引,那么对于小型数据集就可以了。
归档时间: |
|
查看次数: |
4815 次 |
最近记录: |