【问题标题】:Best way to query the latest 1000 records from a table with thousands of rows?从具有数千行的表中查询最新 1000 条记录的最佳方法?
【发布时间】:2012-08-26 16:54:22
【问题描述】:
我有这个 postgresql 代码。
SELECT *
FROM listings
WHERE status != 'inactive'
ORDER BY pkey DESC LIMIT 1000 OFFSET 0
准确地说,这将查询 FIRST 1000 个仍处于活动状态的列表,然后对其进行 DESC 排序。
是否有查询最新/最新数据的最佳方法?
例如,我有 500000 行,现在当我执行查询时,我希望 DESC 查询 499000-500000。
感谢您的帮助。
【问题讨论】:
标签:
sql
postgresql
sql-order-by
【解决方案1】:
言简意赅,你说
这将查询前 1000 个仍处于活动状态的列表,然后对其进行 DESC 排序
这是不准确的。它将排序排序 id DESC 然后选择“第一个”1000(当排序 DESC 时,可以将其视为“最后一个”1000)。
所以,我认为你的问题的答案是在你的问题。您显示的查询将选择“最后一个”(即在列 'pkey` 中具有 最大 值的记录)1000 条记录,从 最近 到一个 一千年前。
请注意,唯一真正需要注意的是,它并不完全是 499000-500000,只有当所有 1,000 个最近的行都“活动”时才会如此。
【解决方案2】:
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