【发布时间】:2016-01-11 11:21:23
【问题描述】:
假设我有博客文章 cmets。在插入时,他们将当前 utc 日期时间作为其创建时间(通过 sysutcdatetime 默认值),并获得一个 ID(通过整数标识列作为 PK)。
现在我想按年龄对 cmets 进行降序排序。只做ORDER BY ID 是否安全,或者是否需要使用创建时间?我正在考虑插入的“并发”提交和回滚以及已提交读取的隔离级别。是否有可能 ID 有时不代表插入顺序?
我之所以这么问,是因为如果按 ID 排序是安全的,那么我可以获得以下好处:
- 我不需要创建时间的索引。
- 按 ID 排序可能更快
- 我不需要 datetime2 列的高精度,因为无论如何排序都需要这样(为了不让两行具有相同的创建时间)。
This 回答说没有创建时间是可能的,但它总是安全的吗?
This 回答说使用标识列不安全。但是当它也是 PK 时,答案给出了一个按 ID 排序的示例,而没有提及这是否安全。
编辑:
This 回答建议先按日期排序,再按 ID。
【问题讨论】:
标签: sql-server database