2017-02-16 2 views
1

追加専用テーブル[1]があり、各行にコミットタイムスタンプがタグ付けされ、更新は同じIDを持つ新しい行のINSERTですが、新しいタイムスタンプ、ある特定のIDについて、そのIDを持つ最新の行を取得する良い方法がいくつかありますか? SQLクエリは[2]のようになりますか?追加専用テーブルの最新の行を効率的に取得する

1:例のテーブル定義:あなたはタイムスタンプをキーとしていますあなたの歴史のためのテーブルを持っている場合は

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

答えて

1

は、DESCキーワードを追加することにより、タイムスタンプキー降順を作ります。そうすることで、SpannerはX-long-agoがどこから始まるかを見つけるためにすべてのデータをスキャンする必要がないため、すべての履歴をX-long-agoまで読むことができます。例えば

SELECT * From AppendOnlyTable WHERE UserId=12345 ORDER BY Timestamp DESC LIMIT 1; 
:最新の行をフェッチする

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

SQLクエリ

関連する問題