有效地检索仅附加表中的最新行

时间:2017-02-16 05:10:52

标签: google-cloud-platform google-cloud-spanner

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

1:示例表定义:

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

1 个答案:

答案 0 :(得分:1)

如果您的历史记录表有时间戳记,请通过添加DESC关键字使时间戳键降序。这样做可以让您阅读X-long-last之前的所有历史记录更加高效,因为Spanner不需要扫描所有数据以找出X-long-before开始的位置,但可以开始阅读“在顶部”。

例如:

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;