Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql MS Access按自动编号/主键排序_Sql_Sorting_Ms Access 2007_Primary Key_Autonumber - Fatal编程技术网

Sql MS Access按自动编号/主键排序

Sql MS Access按自动编号/主键排序,sql,sorting,ms-access-2007,primary-key,autonumber,Sql,Sorting,Ms Access 2007,Primary Key,Autonumber,我对select语句中的结果按表中的主键自动编号排序很感兴趣 最后,我希望从表中选择最新的记录,并注意到使用orderbydatetime DESC比使用orderbyid DESC的执行时间要多得多 假设编号最高的自动编号/主键是最后一条记录,这是一种不好的做法吗 谢谢 加雷斯 假设编号最高的自动编号/主键是最后一条记录,这是一种不好的做法吗 如果您指的是最后一条插入的记录,那么这是一个不错的方法-autonumber将永远不会“向后”(但可以像下面提到的那样变为负值) 但是,有一些边缘情况

我对select语句中的结果按表中的主键自动编号排序很感兴趣

最后,我希望从表中选择最新的记录,并注意到使用
orderbydatetime DESC
比使用
orderbyid DESC
的执行时间要多得多

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

谢谢 加雷斯

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

如果您指的是最后一条插入的记录,那么这是一个不错的方法-
autonumber
将永远不会“向后”(但可以像下面提到的那样变为负值)

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

  • 如果两条记录具有相同的
    DateTime
    值,该怎么办?他们都会被认为是“最后”的记录吗
  • 您是否会插入日期时间较早的记录(例如从外部源导入或合并两个数据集)
  • 你会有超过20亿条记录吗?如果是的话,你会让自动递增的整数变成一个负数
编辑

基于评论和投票,我修改了我的答案,同意自动递增字段不是确定“最后”记录的最佳解决方案。在很多情况下,推荐它可能是错误的

总而言之,如果您对“last”的定义是“具有最高
DateTime
值的记录”,那么请使用它


您可以在
DateTime
上添加索引,这将大大加快对该列的查询。

autonumber将永远不会“倒退”.
是的,它会的。它可以是负数。如果你搞得太乱,你永远不能依赖自动编号是唯一的,甚至不是唯一的。感谢你的回答/评论。
DateTime
不能与select语句的一部分相同,它有一个条件指定
userid
,一个用户不能使用er同时记录两条记录。有可能会合并数据集,这是我没有想到的。谢谢。我尝试为
DateTime
编制索引,但它仍然为查询增加了大量时间。不要依赖自动编号。使用日期。请参阅下面我的评论。