다음을 통해 공유


인덱스 비활성화

인덱스를 비활성화하면 사용자가 인덱스에 액세스할 수 없으며 클러스터형 인덱스의 경우 기본 테이블 데이터에도 액세스할 수 없습니다. 인덱스 정의는 메타데이터에 남아 있고 인덱스 통계는 비클러스터형 인덱스에 유지됩니다. 뷰의 비클러스터형 인덱스나 클러스터형 인덱스를 비활성화하면 인덱스 데이터가 물리적으로 삭제됩니다. 테이블의 클러스터형 인덱스를 비활성화하면 테이블 데이터에 액세스할 수 없습니다. 데이터는 테이블에 계속 남아 있지만 인덱스를 삭제하거나 다시 작성할 때까지 DML 작업에 데이터를 사용할 수 없습니다. 비활성화된 인덱스를 다시 작성하고 활성화하려면 ALTER INDEX REBUILD 문이나 CREATE INDEX WITH DROP_EXISTING 문을 사용합니다.

다음과 같은 경우 하나 이상의 인덱스가 비활성화될 수 있습니다.

  • SQL Server 데이터베이스 엔진에서 SQL Server 업그레이드 동안 인덱스를 자동으로 비활성화합니다.

  • ALTER INDEX를 사용하여 수동으로 인덱스를 비활성화합니다.

SQL Server 업그레이드 동안 인덱스 비활성화

SQL Server의 새로운 릴리스나 서비스 팩으로 업그레이드할 때 인덱스나 뷰 정의에 다음 중 하나가 포함된 경우 데이터베이스 엔진에서 뷰의 인덱스를 비롯한 인덱스를 자동으로 식별하고 비활성화합니다.

  • 데이터베이스 엔진에서 인덱스의 데이터 무결성을 더 이상 보장할 수 없는 식

    예를 들어 인덱스에서 시스템 함수를 사용하고 업그레이드에서 이 함수가 변경되어 다른 결과를 반환한다고 가정합니다. 업그레이드 후 유효하지 않은 정보가 포함될 수 있으므로 업그레이드 동안 데이터베이스 엔진에서 인덱스를 비활성화합니다.

  • 업그레이드 과정에서 변경되어 인덱스를 제대로 정렬하지 않는 데이터 정렬

업그레이드 과정에서 인덱스를 비활성화하면 업그레이드 완료 후 다시 작성할 수 있도록 경고 메시지에 인덱스 이름과 관련 제약 조건 이름이 표시됩니다. 인덱스를 다시 작성하고 제약 조건을 활성화하면 업그레이드 동안 무효화된 데이터가 수정됩니다.

데이터베이스 엔진에서 데이터 무결성을 더 이상 보장할 수 없는 식이 정의에 포함된 경우 CHECK 제약 조건을 비활성화할 수 있습니다. 제약 조건을 활성화하려면 ALTER TABLE CHECK 문을 사용합니다.

ALTER INDEX를 사용하여 인덱스 비활성화

ALTER INDEX DISABLE 문을 사용하여 언제든지 인덱스를 수동으로 비활성화할 수 있습니다.

[!참고]

트랜잭션 복제 게시의 테이블에서는 기본 키 열과 연결된 인덱스를 비활성화할 수 없습니다. 이러한 인덱스는 복제에 필요합니다. 인덱스를 비활성화하려면 먼저 게시에서 테이블을 삭제해야 합니다. 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조하십시오.

다음 작업을 위해 인덱스를 비활성화할 수 있습니다.

  • 인덱스 페이지의 디스크 I/O 오류(823 또는 824 오류) 수정 후 나중에 인덱스 다시 작성

  • 문제 해결을 위해 임시로 인덱스 제거

  • 비클러스터형 인덱스 다시 작성

    비클러스터형 인덱스가 비활성화되어 있지 않으면 다시 작성 시 기존 인덱스와 새 인덱스를 저장할 임시 디스크 공간이 필요합니다. 그러나 별도의 트랜잭션에서 비클러스터형 인덱스를 비활성화하고 다시 작성하면 인덱스를 비활성화하여 생긴 사용 가능한 디스크 공간을 이후에 인덱스를 다시 작성하거나 다른 작업을 수행할 때 다시 사용할 수 있습니다. 정렬을 위한 임시 디스크 공간 이외에는 추가 공간이 필요하지 않습니다. 이러한 임시 디스크 공간은 대개 인덱스 크기의 20%입니다.

    디스크 공간이 제한된 경우 비클러스터형 인덱스를 다시 작성하기 전에 비활성화하는 것이 좋습니다. 예를 들어 하나 이상의 테이블의 모든 비클러스터형 인덱스를 다시 작성하는 저장 프로시저가 있다고 가정합니다. 다시 작성 작업과는 별도의 트랜잭션에서 먼저 인덱스를 비활성화하면 인덱스를 다시 작성하는 데 필요한 임시 디스크 공간을 크게 줄일 수 있습니다.

인덱스를 비활성화하려면

ALTER INDEX(Transact-SQL)

방법: 인덱스 다시 작성(SQL Server Management Studio)