1

假设我们有一个仅追加表 [1],其中每一行都用其提交时间戳进行标记,并且更新是插入具有相同 ID 但新时间戳的新行,对于给定的情况,是否有一些好的获取方法ID,具有该 ID 的最新行?SQL 查询会是什么样子 [2]?

1:示例表定义:

CREATE TABLE AppendOnlyTable (
  ID INT64 NOT NULL,
  Timestamp INT64 NOT NULL
) PRIMARY KEY (ID, Timestamp);
4

1 回答 1

1

如果您有一个以时间戳为键的历史记录表,请通过添加 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;
于 2017-02-16T05:10:51.860 回答