我们可以在postgres中设置一个表来始终首先查看最新的插入吗?

时间:2016-05-26 07:13:03

标签: postgresql

现在我创建一个表并执行

select * from table

我总是先看到第一个插入行。我想先显示我最新的插页。是否有可能以最小的性能影响实现?

1 个答案:

答案 0 :(得分:1)

我相信Postgres使用一个名为OID的内部字段,可以对其进行排序。请尝试以下方法。

select *,OID from table order by OID desc;

SQL, Postgres OIDs, What are they and why are they useful?

中描述了这种方法的一些限制
  

显然OID序列""如果超过4B则换行6.所以本质上它是一个可以换行的全局计数器。如果它确实包装,那么当它被使用和搜索时,可能会开始减速。对于独特的价值观等。

     

另见https://wiki.postgresql.org/wiki/FAQ#What_is_an_OID.3F

注意 - 在更新版本的Postgres中,可以弃用(https://www.postgresql.org/docs/8.4/static/runtime-config-compatible.html#GUC-DEFAULT-WITH-OIDS

虽然你可以创建具有OID的表,即使在最近的版本中如果在表上明确地创建,也可以按照https://www.postgresql.org/docs/9.5/static/sql-createtable.html创建

虽然您在CLI中观察到的行为看起来是一致的,但它不是标准,不能依赖。如果您经常需要手动查看特定表上最近添加的行,您可以添加时间戳字段或其他一些可排序字段,甚至可能将查询包装到存储函数中。我想这种方法取决于您的特定用例