2011-02-10 2 views
2

데이터베이스 그룹에서 정리를 수행하고 있으며 첫 번째 단계는 데이터베이스의 모든 인덱스를 올바른 파일 그룹으로 가져 오는 것입니다.SQL Server : 인덱스 (또한 PK 임)의 파일 그룹 변경

현재 이러한 인덱스는 DATA 파일 그룹과 INDEXES 파일 그룹간에 혼합되어 있습니다. 모두 INDEXES 파일 그룹으로 이동해야합니다.

필자는 스크립트에서 충분히 쉽게 수행 할 수 있지만 기본 키의 인덱스를 어떻게 처리하면 좋을까요?

An explicit DROP INDEX is not allowed on index 'Answer.PK_Answer'. It is being used for PRIMARY KEY constraint enforcement.

그래서 가장 좋은 방법은 무엇입니까 :

다음 명령

DROP INDEX table.indexname 

는 오류가 발생? 기본 키를 삭제 한 다음 인덱스를 삭제 한 다음 기본 키를 다시 만들고 올바른 파일 그룹에 인덱스를 다시 만들어야합니까? 이 방법에 단점이 있습니까?

+3

: 이전 답변의 어느 쪽도이 부분을 규정 별도로 저장하는 것보다). –

+0

예, 클러스터되었습니다. 테이블을 옮기는 것이 큰 테이블의 경우 성능면에서 문제가 될 수 있다고 생각하십니까? 별도의 인덱스 파일 그룹이있는 – Sam

+0

은 좋은 생각 일 수 있습니다. 파일 그룹이 별도의 스핀들에있는 데이터 파일로 구성되어 있습니까? 그것은 보통 자신의 FG –

답변

0

당신은 떨어지고 (DROP_EXISTING = ON)와 함께 파일 그룹

이 TABLENAME ON CLUSTERED INDEX PK_Answer CREATE 인덱스에서 인덱스 (대답) 를 재현 아래 문을 시도 할 수 있습니다;

0

그는 기본 키를 가지고 있기 때문에 :

(DROP_EXISTING = ON)와 함께 UNIQUE CLUSTERED INDEX PK_Answer ON tablename에 (답변) CREATE;

0

다른 사람이이 정보를 필요로하는 경우 (내가 한), 재생 된 PRIMARY KEY를 다른 위치로 이동하려면 끝에 FILEGROUP을 추가하십시오. 클러스터 된 인덱스가 아니라 데이터의 순서를 (정의부터 인덱스가, 또한 테이블을 이동합니다 인덱스를 이동하려고 (PK와 기본적으로 클러스터 된) 클러스터 된 경우

CREATE UNIQUE CLUSTERED INDEX PK_TableName_Answer ON TableName(Answer) WITH(DROP_EXISTING = ON) ON [INDEX];