2013-05-10 5 views
0

사실 테이블을로드하려고합니다. 나는 7 개의 다른 테이블에 합류하고있다. 조인에서 count (1)을 선택하면 실행하는 데 25 분이 걸렸고 988368728 개의 레코드가 반환되었습니다. 그 위에 나는 동일한 테이블 세트로 그룹을 다시 사용하고 있습니다.SSIS를 사용하여 엄청난 수의 레코드 선택

예 :

Select set1.minVal, t2b, t2.Key1, T3.Key2... t7.g From t1, t2,...,t7 
left outer join 
(
    Select 
     Min(t1a) minVal, Max(t2b) maxVal, t2.Key1, T3.Key2 From t1, t2,...,t7 
    group by t2.Key1, K3.Key2(Key Columns) 
)set1 
on t2.Key1 = set1.Key1 
and t3.Key2 = set1.Key2 
and t2b = maxVal 

I가 1 시간 후에 실패 된 상기 쿼리를 실행

TEMPDB 인해 충분한 메모리이다. 팩트 테이블을로드하려면 SSSI 패키지에서이 쿼리를 사용해야합니다. 여러 가지 방법으로이를 달성하기 위해 쿼리를 작성할 수있는 옵션이 있습니다. 그 중 하나는 SP를 사용하여 결과를 나누고 정복 할 수 있으며 SSIS 패키지를 사용하여 분할하고 정복 할 수는 있지만이를 어기는 방법을 알지 못합니다.

이번에는 살인자를 분류하는 데 도움이 필요합니다.

답변

4

질문 :

Select set1.minVal, t2b, t2.Key1, T3.Key2... t7.g From t1, t2,...,t7 

Min(t1a) minVal, Max(t2b) maxVal, t2.Key1, T3.Key2 From t1, t2,...,t7 

t1의 모든 행이 t2의 모든 행과 일치 7 (아마도) 테이블에 카티 제품을하고있는 서브 쿼리 t3 등 모든 행과 일치합니다.

원하는 것을 알지 못하면 답을하기가 어렵습니다. 혹시 7 가지 하위 쿼리가 필요하거나 어떻게 든 함께 7 개의 테이블을 조인해야한다고 생각합니다.

+0

그룹 전에 98mils를 가지고 있다고 확신합니다. 그룹별로 35mils로 줄었습니다. 나는이 질문을 나누고 정복 할 방법을 원합니다. 저장 프로 시저 또는 SSIS 패키지. – HRK

+0

요점은 데카르트 조인을 사용 하시겠습니까? 아니면 # 또는 레코드를 줄이기 위해 사용해야하는 테이블 사이에 키 열이 있습니까? 또한 7 개의 테이블 중 4 개의 값만 사용하고 있습니다. –

+2

다른 식으로 말하면 ....이 쿼리는 정확하지 않은 것으로 보입니다. 항상 TEMPDB가되는 데카르트 조인이 생성됩니다. 큰 테이블을 사용하는 경우 오류가 발생합니다. 쿼리를 분석하고 올바른 쿼리를 작성해야합니다. 너의 것은 틀림없이 틀리다. –

0

데이터 흐름 태스크를 통해 대상 테이블의 준비 영역에 각 테이블을로드 한 다음 SQL 실행 태스크를 사용하여 TSQL을 사용하여 조인을 수행하고 사실 테이블에 삽입하십시오.

관련 문제