我想用行版本控制为我的表设计主键。我的表包含 2 个主要字段:ID 和时间戳,以及一堆其他字段。对于唯一的“ID”,我想存储以前版本的记录。因此,我正在为表创建主键以作为 ID 和时间戳字段的组合。因此,要查看特定 ID 的所有版本,我可以给出,
Select * from table_name where ID=<ID_value>
要返回 ID 的最新版本,我可以使用
Select * from table_name where ID=<ID_value> ORDER BY timestamp desc
并获得第一个元素。我的问题是,考虑到 ID 字段是主键字段的一部分,这个查询是否会高效并在 O(1) 中运行,而不是扫描整个表以获取与相同 ID 匹配的所有条目?理想情况下,为了得到 O(1) 的结果,我应该提供整个主键。如果它确实需要进行整个表扫描,那么我还能如何设计我的主键以便我在 O(1) 中完成这个请求?
谢谢,斯里拉姆