Sql MS Access按自动编号/主键排序
我对select语句中的结果按表中的主键自动编号排序很感兴趣 最后,我希望从表中选择最新的记录,并注意到使用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将永远不会“向后”(但可以像下面提到的那样变为负值) 但是,有一些边缘情况
orderbydatetime DESC
比使用orderbyid DESC
的执行时间要多得多
假设编号最高的自动编号/主键是最后一条记录,这是一种不好的做法吗
谢谢
加雷斯
假设编号最高的自动编号/主键是最后一条记录,这是一种不好的做法吗
如果您指的是最后一条插入的记录,那么这是一个不错的方法-autonumber
将永远不会“向后”(但可以像下面提到的那样变为负值)
但是,有一些边缘情况您没有指定哪些可能会改变正确答案:
- 如果两条记录具有相同的
值,该怎么办?他们都会被认为是“最后”的记录吗李>DateTime
- 您是否会插入日期时间较早的记录(例如从外部源导入或合并两个数据集)
- 你会有超过20亿条记录吗?如果是的话,你会让自动递增的整数变成一个负数
DateTime
值的记录”,那么请使用它
您可以在
DateTime
上添加索引,这将大大加快对该列的查询。autonumber将永远不会“倒退”.
是的,它会的。它可以是负数。如果你搞得太乱,你永远不能依赖自动编号是唯一的,甚至不是唯一的。感谢你的回答/评论。DateTime
不能与select语句的一部分相同,它有一个条件指定userid
,一个用户不能使用er同时记录两条记录。有可能会合并数据集,这是我没有想到的。谢谢。我尝试为DateTime
编制索引,但它仍然为查询增加了大量时间。不要依赖自动编号。使用日期。请参阅下面我的评论。