2015-08-21 29 views
-1

这应该是一个相当常规的操作:当从DB中的表中检索记录时,我需要按降序创建日期时间对它们进行排序。但是如果我使用AUTOINCREMENT键,我也可以通过降低键值来进行排序。按日期时间字段排序DESC或按主键DESC排序?

我的问题是:哪个更好?

  1. 性能方面,我知道主键和数据时间字段使用不同类型的指数,哪一个更有效?
  2. 他们总是返回相同的结果吗? AUTO-INCREMENT键是否在达到最大值时环绕?
+1

PostgreSQL中没有'AUTO_INCREMENT'字段。我假设你的意思是'SERIAL',它只是一个默认的'INTEGER'?另外,是什么让你认为他们使用不同类型的索引?两者都只是B树索引。如果它是'PRIMARY KEY',那么它将是'UNIQUE'索引,但它们在结构上是相同的。 –

+0

@CraigRinger SERIAL键是否环绕?这是我需要担心的事吗? – NeoWang

+0

他们不环绕。但是,不能保证根据时间戳和生成的密钥,行的排序是相同的,特别是如果使用'current_timestamp'而不是'clock_timestamp'。如果您想根据降序创建时间进行订购,请根据降序创建时间对其进行排序,而不是按键。 –

回答

2

我想你应该清楚地识别排序的列。如果没有,如果更新1行数据,结果顺序可以更改