~ 2 억 행과 ~ 15 열이있는 테이블이 있습니다. COLUMNSTORE
내 테이블에 인덱스 를 만들 계획 입니다.
columnstore 인덱스에서 사용하는 열의 순서에 따라 성능이 변경됩니까? 그렇다면 그 배후의 논리는 무엇입니까?
~ 2 억 행과 ~ 15 열이있는 테이블이 있습니다. COLUMNSTORE
내 테이블에 인덱스 를 만들 계획 입니다.
columnstore 인덱스에서 사용하는 열의 순서에 따라 성능이 변경됩니까? 그렇다면 그 배후의 논리는 무엇입니까?
답변:
아니요, 순서는 중요하지 않습니다. 각 열은 개별적으로 고려됩니다.
SQL Server 팀에서 (강조 추가) :
일반적으로 테이블의 모든 열을 columnstore 인덱스에 저장하려고합니다. columnstore 인덱스에는 B-tree 인덱스와 같은 키가 없으므로 열을 나열하는 순서는 중요 하지 않습니다. 내부적으로, 데이터는 최상의 압축을 얻기 위해 자동으로 재정렬됩니다.
SQL Server 2012-2016에는 세그먼트 제거 개념 ( http://social.technet.microsoft.com/wiki/contents/articles/5651.understanding-segment-elimination.aspx )이 있으며 실제로 적어도 하나의 열 (각 파티션 내부에 1 개의 여분).
더 나은 세그먼트 제거를위한 데이터로드를 설명하는 다음 기사를 고려하십시오. 더 나은 세그먼트 제거를위한 데이터로드
아론 은 2012 년부터 기존의 훌륭한 답변을 얻었습니다 .
SQL 2014+에서는 클러스터 된 columnstore 인덱스를 사용할 수 있습니다. 클러스터형 columnstore 인덱스를 만들 때 사용 가능한 열 선택 또는 순서 옵션이 없습니다. 설명 된 열 저장소 색인