我有一个查询:
select qid,ansid,ans from table1 where askerid='something'
此查询可以检索许多行。但我想一次只显示 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
我想知道这是否是一个良好的查询性能和替代查询,其性能优于上述查询。
正确的方法是使用
LIMIT
andOFFSET
。请注意,要使其正常工作,您的查询将需要一个
ORDER BY
子句,以便每次以相同的顺序获取行。您的第一个查询是:
第二个查询的
OFFSET
值为 50,因为您想跳过前 50 行:该
ORDER BY
子句要在WHERE
andLIMIT
子句之间添加。关于此的 Postgres 文档在这里,并提到这对于大
OFFSET
值可能不是有效的。如果ORDER BY
列被索引,那么对于小型数据集就可以了。