【发布时间】:2015-08-21 04:03:19
【问题描述】:
这应该是一个相当常规的操作:从数据库中的表中检索记录时,我需要按创建日期时间降序对它们进行排序。但如果我使用 AUTOINCREMENT 键,我也可以按键值降序排序。
我的问题是:哪个更好?
- 就性能而言,我知道主键和数据时间字段使用不同类型的索引,哪一种更有效?
- 它们总是返回相同的结果吗? AUTO-INCREMENT 键在达到最大值时是否回绕?
【问题讨论】:
-
PostgreSQL 中没有
AUTO_INCREMENT字段。我假设你的意思是SERIAL,它只是一个默认的INTEGER?另外,是什么让您认为他们使用不同类型的索引?两者都只是 b 树索引。如果是PRIMARY KEY,那么它将是UNIQUE索引,但它们在结构上是相同的。 -
@CraigRinger SERIAL 键是否环绕?这是我需要担心的事情吗?
-
它们不会环绕。但是,不能保证基于时间戳和生成的键的行顺序是相同的,特别是如果您使用
current_timestamp而不是clock_timestamp。如果要按创建时间降序排序,请按创建时间降序排列,而不是按键。
标签: sql database postgresql database-performance