2011-07-01 3 views
1

데이터웨어 하우스 스타 스키마에 대규모 (3,000,000,000 행) 사실 테이블이 있습니다. 테이블이 날짜 키로 분할됩니다.대규모 SQL 테이블에 새 인덱스를 작성하는 방법

외래 키 중 하나에 색인을 추가하고 싶습니다. 이렇게하면 큰 차원 테이블에서 자식없는 행을 식별하고 제거 할 수 있습니다.

단지 CREATE INDEX 문을 발행하면 영원히 걸릴 것입니다.

모든 SQL 전문가는이 문제에 대한 멋진 기술을 가지고 있습니까?

(SQL 2008) 내가 계획을 가지고

--Simplified example... 

CREATE TABLE FactRisk 
(
    DateId int not null, 
    TradeId int not null, 
    Amount decimal not null 
) 

--I want to create this index, but the straightforward way will take forever... 

CREATE NONCLUSTERED INDEX IX_FactRisk_TradeId on FactRisk (TradeId) 
+2

그것의 큰 테이블은 항상 오랜 시간이 걸릴 것이다. 나는 인덱스가 생성되는 동안 테이블이 기능을 유지한다는 것이 가장 희망적이라고 생각한다. – Justin

답변

0

... 테이블

  1. 스위치 밖으로 모든 일상 파티션
  2. 색인 비어 팩트 테이블
  3. 색인 개별 파티션
  4. 모든 파티션을 다시 전환하십시오.

초기 조사는 이것이 효과가 있음을 의미합니다. 나는 다시보고 할 것이다 ...

+0

"온라인 사용"이라는 색인을 만드는 것이 충분히 좋았으며, 모든 것을 비트로 가져 와서 다시 함께 넣으려고하지 않았습니다. – NeedHack

관련 문제