Sql 从具有数千行的表中查询最近1000条记录的最佳方法?

Sql 从具有数千行的表中查询最近1000条记录的最佳方法?,sql,postgresql,sql-order-by,Sql,Postgresql,Sql Order By,我有这个postgresql代码 SELECT * FROM listings WHERE status != 'inactive' ORDER BY pkey DESC LIMIT 1000 OFFSET 0 准确地说,这将查询前1000个仍处于活动状态的列表,然后对其进行排序描述。 是否有查询最新/最新数据的最佳方法? 例如,我有500000行,现在当我执行查询时,我希望查询499000-500000行 谢谢您的帮助。最后一条X记录按Y降序排列与第一条X记录按Y升序排列相同,不是吗?

我有这个postgresql代码

SELECT * 
FROM listings 
WHERE status != 'inactive' 
ORDER BY pkey DESC LIMIT 1000 OFFSET 0
准确地说,这将查询前1000个仍处于活动状态的列表,然后对其进行排序描述。 是否有查询最新/最新数据的最佳方法? 例如,我有500000行,现在当我执行查询时,我希望查询499000-500000行


谢谢您的帮助。

最后一条X记录按Y降序排列与第一条X记录按Y升序排列相同,不是吗?在得到结果后,您必须再次翻转顺序

简单的例子:

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

你说的只是含混不清的话

这将查询前1000个仍处于活动状态的列表,然后对其进行排序描述

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

所以,我认为你的问题的答案就在你的问题中。您显示的查询将选择“last”(即“pkey”列中具有最大值的记录)1000条记录,从最近的记录到1000年前的记录排序


请注意,唯一真正需要注意的是,它并不完全是499000-500000行,这只有在最近1000行都处于“活动”状态时才是正确的。

就这一点而言,为什么它被标记为php?