2017-05-07 2 views
0

데이터웨어 하우스에 두 개의 테이블, balancesdates이 있습니다.where 절에서 INT vs. DATE 사용

Surrogate Key Date | Date  | Account | Balance 
1     | 2017-02-01 | 100  | 1234 
1     | 2017-02-01 | 200  | 5151 
2     | 2017-02-02 | 100  | 5123 
2     | 2017-02-02 | 200  | 8234 

그리고 dates 다음 구조를 갖는다 : Balances의 구조는 다음

Surrogate Key Date | Date  | Weekday | Week in Year | ... other columns 
1     | 2017-02-01 | Wed  | 5   | 
2     | 2017-02-02 | Thu  | 5   | 

Surrogate Key Date 컬럼 INT 입력이다하고 Date 열 두 테이블에 입력 한 날짜이다.

balances 테이블의 서로 게이트 키는 OLAP 쿼리에 사용되며 일반 보고서에는 날짜가 사용됩니다.

이제 데이터베이스를 집중적으로 사용하는 프로그램 (일괄 처리)을 개발해야하며 날짜 열을 통해 잔액 테이블에 반복적으로 액세스해야합니다. 이 프로세스에서 대리 키 날짜 열 또는 날짜 열을 사용해야합니까? 날짜별로 필터링해야합니다. where 절의 INT 액세스가 DATE 액세스보다 더 효율적입니까? OLAP을 사용하지 않을 때 Surrogate Key Date 열을 무시해야합니까?

답변

1

성능 측면에서 볼 때 SAP HANA는 전혀 중요하지 않습니다. 일반적으로 HANA는 조인과 결과 집합을 계산할 때 내부 참조 ID가있는 실제 데이터 형식에서는 작동하지 않습니다.

사실 1 : 1을 Date 열로 매핑하면 대리 키를 갖는 이유가 전혀 없습니다. 또한 중복을 허용하는 것처럼 보이기 때문에 키가 아닙니다. 확실하지 않은,이 모델에서 같은 날짜의 특정 레코드를 처리하는 방법.

+0

'balance'테이블의 키는 '대리 키 날짜 + 계좌 번호'이며, 중복을 허용하지 않습니다. 나는 OLAP를 실행하기 위해'Surrogate Key Date'와 보고서를 실행하기 위해'Date' 칼럼을 필요로한다. (Surrogate Key Date는 보고서를 만드는 최종 사용자에게 아무런 의미가 없다.) – ps0604

+0

나는 - 글쎄, 이 경우에도 처음부터 대리 키를 사용하면 아무런 이점이 없습니다. 'DATE'와'Account number'를 기반으로 복합 기본 키를 생성하고이를 사용하십시오. HANA는이 연결에 대해 숨겨진 열을 내부적으로 만들고 복합 키의 모든 처리가 해당 단일 열에서 수행됩니다. 가장 큰 단점은 추가 공간 요구 사항이지만 분명히 대리 키를 사용한다는 것입니다. –

관련 문제