2017-02-16 1 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 키워드를 추가하여 타임 스탬프 키 하강을합니다. 이렇게하면 스패너는 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 쿼리 최신 행을 가져올 : 예를 들어

관련 문제