假设我有一篇博客文章的评论。在插入时,它们会获得当前的UTC日期时间作为它们的创建时间(通过sysutcdatetime默认值),并且它们会获得一个ID(通过整数标识列作为PK)。现在我想按照它们的年龄降序排列评论。只使用ORDER BY ID
是否安全,还是必须使用创建时间?我在考虑“并发”提交和回滚插入以及读取提交的隔离级别。是否可能ID有时不代表插入顺序?
我之所以这样问是因为如果按ID排序是安全的,那么我可以获得以下好处:
- 我不需要为创建时间建立索引。
- 按ID排序可能更快
- 我不需要在datetime2列上具有高精度,因为这仅在排序时才需要(为了不具有相同的创建时间的两行)。
这个回答表示,当您没有创建时间时,这是可能的,但它总是安全的吗?
这个回答表示对于标识列不安全。但是当它也是PK时,该回答给出了按ID排序的示例,没有提到这是否安全。
编辑:
这个回答建议先按日期排序,然后再按ID排序。
DateTime ASC,ID ASC
。 - user764754