2015-08-21 28 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行數據,結果順序可以更改