假设我们有一个仅追加表 [1],其中每一行都用其提交时间戳进行标记,并且更新是插入具有相同 ID 但新时间戳的新行,对于给定的情况,是否有一些好的获取方法ID,具有该 ID 的最新行?SQL 查询会是什么样子 [2]?
1:示例表定义:
CREATE TABLE AppendOnlyTable (
ID INT64 NOT NULL,
Timestamp INT64 NOT NULL
) PRIMARY KEY (ID, Timestamp);
假设我们有一个仅追加表 [1],其中每一行都用其提交时间戳进行标记,并且更新是插入具有相同 ID 但新时间戳的新行,对于给定的情况,是否有一些好的获取方法ID,具有该 ID 的最新行?SQL 查询会是什么样子 [2]?
1:示例表定义:
CREATE TABLE AppendOnlyTable (
ID INT64 NOT NULL,
Timestamp INT64 NOT NULL
) PRIMARY KEY (ID, Timestamp);
如果您有一个以时间戳为键的历史记录表,请通过添加 DESC 关键字使时间戳键降序。这样做可以更有效地读取您的所有历史直到 X-long-ago,因为 Spanner 不需要扫描您的所有数据以找出 X-long-ago 从哪里开始,而可以从“顶部”开始读取。
例如:
CREATE TABLE AppendOnlyTable (
ID INT64 NOT NULL,
Timestamp INT64 NOT NULL
) PRIMARY KEY (ID, Timestamp DESC);
获取最新行的 SQL 查询:
SELECT * From AppendOnlyTable WHERE UserId=12345 ORDER BY Timestamp DESC LIMIT 1;