从包含数千行的表中查询最新1000条记录的最佳方法?

时间:2012-08-26 16:54:23

标签: sql postgresql sql-order-by

我有这个postgresql代码。

SELECT * 
FROM listings 
WHERE status != 'inactive' 
ORDER BY pkey DESC LIMIT 1000 OFFSET 0

准确地说,这将查询仍然有效的FIRST 1000列表,然后将其排序为DESC。 有最好的方法来查询最新/最新数据吗? 比如我有500000行,现在当我执行查询时,我想要查询499000-500000 DESC。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

只是说一句话,你说

  

这将查询仍然有效的FIRST 1000列表,然后将其排序为DESC

哪个不准确。它将对排序ID DESC 进行排序,然后选择“第一”1000(当排序DESC时可以将其视为“最后”1000)。

所以,我认为你的问题的答案是 你的问题。您显示的查询将选择“最后”(即列'pkey`中具有最大值的记录)1000条记录,从最新到一个< em>一千年前。

请注意,唯一真正的警告是,它不完全是499000-500000,只有当所有1,000个最近的行都“有效”时才会出现这种情况。

答案 1 :(得分:0)

Y下降排序的最后X个记录与Y上升的第一个X记录顺序相同,不是吗?一旦获得结果,您就必须再次翻转订单。

简单示例:

Data: C, E, B, A, D

Descending:  E, D, C, B, A
Descending (last 3):  C, B, A

Ascending:  A, B, C, D, E
Ascending (first 3):  A, B, C
Ascending (first 3, reverse sorted):  C, B, A