>

상대적으로 작은 팩트 테이블 (테이블 당 평균 3 천만 행)에 가장 적합한 인덱스 및 분산 디자인입니다. 각 테이블의 구조는 다음과 유사합니다.

CREATE TABLE FactTable (
    TimeDimensionID INT NOT NULL,
    DimensionID1 VARCHAR (10) NOT NULL,
    DimensionID2 VARCHAR (10) NOT NULL,
    DimensionID3 VARCHAR (10) NOT NULL,
    DimensionID4 VARCHAR (10) NOT NULL,
    Measure1 INT,
    Measure2 FLOAT,
    Measure3 DECIMAL (10.2),
    Measure4 DECIMAL (10,2)
)

TimeDimensionID, DimensionID1, DimensionID2, DimensionID3 및 DimensionID4의 결합은 팩트 테이블에서 고유합니다. 현재 5 개의 필드에 클러스터되고 고유 한 기본 키가 있습니다.

  • 이러한 테이블을 SQL Azure Data Warehouse로 마이그레이션하는 가장 좋은 인덱싱 및 배포 란 무엇입니까? TimeDimensionID 필드를 사용하여 인덱스 및 해시 배포에 CLUSTERED INDEX (DimensionID1, DimensionID2, DimensionID3 및 DimensionID4)를 사용하려고합니다.
  • 해시 분포가 해당 필드에 해당하더라도 CLUSTERED INDEX에 TimeDimensionID 필드가 포함되어야합니까?
  • 테이블이 실제로 1 억 행 미만인 경우에도이 디자인이 정확합니까? 아니면 COLUMN STORE INDEX를 사용해야합니까?
  • 사실 테이블에 복제 된 테이블을 사용해야합니까?

  • 답변 # 1

    일부 권장 사항 :

    가능한 경우 DimensionID를 varchar에서 int/bigint로 이동하십시오. 더 나은 성능, 적은 스토리지 및 저렴한 비용을 얻을 수 있습니다.

    현재 클러스터형 인덱스는 잊어라.

    데이터를 핫스팟 할 해시 분산 테이블이지만 최신이 아닌 테이블을 만듭니다.

    테이블을 CLUSTERED COLUMNSTORE INDEX로 생성

    FACT 테이블을 복제하지 말고 대신 DIMENSIONS를 복제하십시오.

관련 자료

  • 이전 MongoDB에서 컬렉션을 만들지 않고 Mongoose 모델을 만드는 방법은 무엇입니까?
  • 다음 프로그래밍 방식으로 R 수식을 설정하는 방법