现在我创建一个表并执行
select * from table
我总是先看到第一个插入行。我想先显示我最新的插页。是否有可能以最小的性能影响实现?
答案 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.所以本质上它是一个可以换行的全局计数器。如果它确实包装,那么当它被使用和搜索时,可能会开始减速。对于独特的价值观等。
注意 - 在更新版本的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中观察到的行为看起来是一致的,但它不是标准,不能依赖。如果您经常需要手动查看特定表上最近添加的行,您可以添加时间戳字段或其他一些可排序字段,甚至可能将查询包装到存储函数中。我想这种方法取决于您的特定用例