SQL最佳实践 - 可以依靠自动增量字段按时间顺序对行进行排序吗?

Mad*_*aks 12 sql

我正在与一个想要将时间戳添加到一堆表的客户端一起工作,以便他们可以按时间顺序对这些表中的记录进行排序.所有表都有一个自动递增的整数字段作为其主键(id).

(简单)想法 - 节省开销/存储并依赖主键按时间顺序排序字段.当然这有效,但我不确定这种方法在声音数据库设计中是否可以接受.

优点:每条记录需要的存储空间更少,VO类更简单等.

Con:它意味着该字段的特征,即一个简单的标识符,其定义不以任何方式定义或保证它应该/将如此起作用.

假设为了我的问题,DB表定义是一成不变的.仍然 - 这在最佳实践方面是否可以接受?

谢谢

egr*_*nin 8

你要求"最佳实践",而不是"不可怕的做法",所以:,你不应该依靠自动增加的主键来建立年表.有一天你要引入数据库设计的改变,这将会破坏.我已经看到它发生了.

一个日期时间列,其默认值GETDATE()具有非常小的开销(大约一个整数)和(更好地)告诉您不仅仅是序列而是实际的日期和时间,这通常证明是无价的.即使在列上保持索引也相对便宜.

这些天,我总是CreateDate列数据对象连接到现实世界事件(例如帐户创建).

编辑添加:

如果精确的时间顺序对您的应用程序至关重要,则不能依赖于自动增量或时间戳(因为无论分辨率有多高,总会有相同的时间戳).你可能不得不做一些特定于应用程序的东西.