假设我们有一个仅附加表[1],其中每一行都用其提交时间戳标记,并且更新是具有相同ID但新时间戳的新行的INSERT,是否有一些好的获取方法,对于给定的ID,具有该ID的最新行? SQL查询会是什么样子[2]?
1:示例表定义:
CREATE TABLE AppendOnlyTable (
ID INT64 NOT NULL,
Timestamp INT64 NOT NULL
) PRIMARY KEY (ID, Timestamp);
答案 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;