【问题标题】:Order by datetime field DESC or order by primary key DESC?按日期时间字段 DESC 排序还是按主键 DESC 排序?
【发布时间】:2015-08-21 04:03:19
【问题描述】:

这应该是一个相当常规的操作:从数据库中的表中检索记录时,我需要按创建日期时间降序对它们进行排序。但如果我使用 AUTOINCREMENT 键,我也可以按键值降序排序。

我的问题是:哪个更好?

  1. 就性能而言,我知道主键和数据时间字段使用不同类型的索引,哪一种更有效?
  2. 它们总是返回相同的结果吗? AUTO-INCREMENT 键在达到最大值时是否回绕?

【问题讨论】:

  • PostgreSQL 中没有 AUTO_INCREMENT 字段。我假设你的意思是SERIAL,它只是一个默认的INTEGER?另外,是什么让您认为他们使用不同类型的索引?两者都只是 b 树索引。如果是PRIMARY KEY,那么它将是UNIQUE 索引,但它们在结构上是相同的。
  • @CraigRinger SERIAL 键是否环绕?这是我需要担心的事情吗?
  • 它们不会环绕。但是,不能保证基于时间戳和生成的键的行顺序是相同的,特别是如果您使用current_timestamp 而不是clock_timestamp。如果要按创建时间降序排序,请按创建时间降序排列,而不是按键。

标签: sql database postgresql database-performance


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 2023-04-06
    • 1970-01-01
    • 2013-08-14
    • 2021-12-04
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多