Postgres默认排序由id - worldship

Omi*_*nus 13 postgresql ups-worldship

我需要设置worldship来从我们的一个postgres数据库中提取.我需要它,以便包按ID排序.我没有办法(我知道)让worldship发送order by子句,所以我需要让返回的记录的默认值由id返回.

在第二个注释我不知道postgres默认排序它在最后一次更改记录时看起来像所以如果我写了两个记录id 1,2然后在我运行查询时更改记录2它返回记录2成为第一.

Den*_*rdy 29

除非您添加order by子句,否则按照sql规范以未指定的顺序返回行.在Postgres中,这意味着您将获得行,基本上是活动行在磁盘上读取的顺序.

如果您想要一致的订单而无需添加order by子句,请按照Jack的注释中的建议创建一个视图.


a_h*_*ame 7

没有"默认排序"这样的东西.表中的行未排序.

您可以使用视图伪装(如Jack Maney所建议的那样)您无法影响返回的行的顺序.

但是如果你这样做,请注意,基于该视图向SELECT添加额外的ORDER BY将对数据进行两次排序.

另一个选项可能是在该表上运行CLUSTER命令,以根据所需的列对磁盘上的行进行物理排序.但是这个窗台并不能保证 按行顺序返回行.甚至没有平原SELECT * FROM your_table(但可能性相当高).您需要定期重新运行此语句,因为不会自动维护CLUSTER命令创建的顺序.


Web*_*tor 5

对于它的价值,可能并不多,PostgreSQL 的“默认”排序基于记录的上次更新时间。最近更新的记录将出现在最后。

  • @TigranBabajanyan 确实如此。我已经澄清了我的答案。 (2认同)