2017-02-16 3 views
0

기본 키 순서가 지정되지 않은 Cloud Spanner 테이블이 있으므로 기본적으로 ASC (오름차순)입니다. 기본 키로 결과를 DESC (내림차순) 순서로 정렬하려는 쿼리가 있습니다. Cloud Spanner 설명서에 따르면 ORDER BY DESC가 역순으로 테이블을 스캔하는 가장 효율적인 방법은 아닙니다. 역방향 스캔을 수행하는 올바른 방법은 테이블에 역 색인을 작성하는 것입니다. 그게 최선의 접근인가, 아니면 내가 할 수있는 일이 더 있니?Cloud Spanner 테이블을 역순으로 검색

답변

0

맞습니다. ORDER BY DESC는 현재 키가 ASC 순서 인 경우 키 순서로 검색 할 때 Cloud Spanner에서 효율적이지 않습니다. DESC 순서로 보조 인덱스를 만들거나 테이블 자체의 기본 키에서 DESC 순서를 사용할 수 있습니다 (불행히도이 경우 테이블을 다시 만들어야합니다).

일반적으로 테이블이나 인덱스의 순서와 일치하지 않는 ORDER BY 절은 정렬 단계가 필요하므로 성능에 영향을줍니다. 따라서 ORDER BY DESC 스캔은 테이블이나 인덱스가 같은 순서로 정렬 된 경우 수행됩니다. 이것은 주요 구성 요소 중 일부가 ASC로 정렬되고 일부가 DESC 인 경우 특히 복잡해 지므로 ORDER BY 절이 테이블 또는 색인의 순서와 정확히 일치하는지 확인하는 것이 가장 좋습니다. 이해해야 할 중요한 점은 Spanner가 기본 키 순서로 데이터를 저장한다는 점입니다 (https://cloud.google.com/spanner/docs/schema-and-data-model#primary_keys 참조). 저장 형식은 정방향 검색을 효율적으로 지원합니다. 인덱스의 경우 기본 키는 인덱스의 항목을 조회하는 데 사용할 수있는 열 집합입니다.

관련 문제