1

我对通过作为表中主键的自动编号对 select 语句中的结果进行排序很感兴趣。

最终,我希望从表中选择最近的记录,并注意到使用时的执行时间ORDER BY DateTime DESC比使用时长得多ORDER BY Id DESC

假设最高编号的自动编号/主键将是最后一条记录是不好的做法吗?

谢谢加雷斯

4

1 回答 1

3

假设最高编号的自动编号/主键将是最后一条记录是不好的做法吗?

如果您的意思是最后插入的记录,那么这是一个不错的方法 -autonumber永远不会“倒退”(但可以如下所述变为负数)。

但是,有一些边缘情况您没有指定可能会改变正确答案:

  • 如果两条记录具有相同的DateTime值怎么办?他们会被认为是“最后一个”记录吗?
  • 您是否曾经插入一条较早的记录DateTime(例如从外部源导入或合并两个数据集。
  • 你会拥有超过 20 亿条记录吗?如果是这样,那么您将自动递增整数滚动到负数

编辑

根据评论和投票,我正在修改我的答案以同意自动增量字段不是确定“最后”记录的最佳解决方案。有太多情况下推荐它可能是错误的。

总而言之,如果您对“最后一个”的定义是“DateTime价值最高的记录”——那就用它吧!

您可以添加一个索引,DateTime该索引将显着加快对该列的查询。

于 2014-03-19T12:50:46.877 回答