인덱스 및 제약 조건 활성화

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server 2012에서 비활성화된 인덱스를 활성화하는 방법에 대해 설명합니다. 비활성화된 인덱스는 다시 작성되거나 삭제될 때까지 비활성화된 상태로 유지됩니다.

항목 내용

  • 시작하기 전 주의 사항

    제한 사항

    보안

  • 비활성화된 인덱스를 활성화하려면:

    SQL Server Management Studio

    Transact-SQL

시작하기 전 주의 사항

제한 사항

  • 인덱스를 다시 작성한 후에 해당 인덱스를 비활성화하여 비활성화된 제약 조건은 수동으로 활성화해야 합니다. 연관된 인덱스를 다시 작성하여 PRIMARY KEY 및 UNIQUE 제약 조건을 활성화합니다. PRIMARY KEY 또는 UNIQUE 제약 조건을 참조하는 FOREIGN KEY 제약 조건을 활성화하기 전에 이 인덱스를 다시 작성(활성화)해야 합니다. ALTER TABLE CHECK CONSTRAINT 문을 사용하여 FOREIGN KEY 제약 조건을 활성화합니다.

  • ONLINE 옵션이 ON으로 설정된 경우 비활성화된 클러스터형 인덱스를 다시 작성할 수 없습니다.

  • 클러스터형 인덱스를 비활성화하거나 활성화하고 비클러스터형 인덱스를 비활성화하면 클러스터형 인덱스 동작으로 인해 다음과 같은 결과가 비활성화된 비클러스터형 인덱스에 나타납니다.

    클러스터형 인덱스 동작

    비활성화된 비클러스터형 인덱스 …

    ALTER INDEX REBUILD

    비활성화된 상태로 유지됩니다.

    ALTER INDEX ALL REBUILD

    다시 작성되고 활성화됩니다.

    DROP INDEX

    비활성화된 상태로 유지됩니다.

    CREATE INDEX WITH DROP_EXISTING

    비활성화된 상태로 유지됩니다.

    클러스터형 인덱스를 새로 만들 때의 동작은 ALTER INDEX ALL REBUILD를 사용할 때와 동일합니다.

  • 클러스터형 인덱스와 연관된 비클러스터형 인덱스에 허용된 동작은 두 인덱스 유형의 상태(비활성화되어 있거나 활성화되어 있는지)에 따라 다릅니다. 다음 표에는 비클러스터형 인덱스에 허용된 동작이 요약되어 있습니다.

    비클러스터형 인덱스 동작

    클러스터형 인덱스와 비클러스터형 인덱스가 모두 비활성화됩니다.

    클러스터형 인덱스가 활성화되고 비클러스터형 인덱스는 비활성화되거나 활성화됩니다.

    ALTER INDEX REBUILD

    동작이 실패합니다.

    동작이 성공합니다.

    DROP INDEX

    동작이 성공합니다.

    동작이 성공합니다.

    CREATE INDEX WITH DROP_EXISTING

    동작이 실패합니다.

    동작이 성공합니다.

보안

사용 권한

테이블이나 뷰에 대한 ALTER 권한이 필요합니다. DBCC DBREINDEX를 사용하는 경우 사용자는 테이블의 소유자이거나 sysadmin 고정 서버 역할 또는 db_ddladmindb_owner 고정 데이터베이스 역할의 멤버여야 합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]

SQL Server Management Studio 사용

비활성화된 인덱스를 활성화하려면

  1. 개체 탐색기에서 더하기 기호를 클릭하여 인덱스를 활성화할 테이블이 포함된 데이터베이스를 확장합니다.

  2. 더하기 기호를 클릭하여 테이블 폴더를 확장합니다.

  3. 더하기 기호를 클릭하여 인덱스를 활성화할 테이블을 확장합니다.

  4. 더하기 기호를 클릭하여 인덱스 폴더를 확장합니다.

  5. 활성화할 인덱스를 마우스 오른쪽 단추로 클릭하고 다시 작성을 선택합니다.

  6. 인덱스 다시 작성 대화 상자에서 다시 작성할 인덱스 표에 올바른 인덱스가 있는지 확인한 다음 확인을 클릭합니다.

테이블의 모든 인덱스를 활성화하려면

  1. 개체 탐색기에서 더하기 기호를 클릭하여 인덱스를 활성화할 테이블이 포함된 데이터베이스를 확장합니다.

  2. 더하기 기호를 클릭하여 테이블 폴더를 확장합니다.

  3. 더하기 기호를 클릭하여 인덱스를 활성화할 테이블을 확장합니다.

  4. 인덱스 폴더를 마우스 오른쪽 단추로 클릭하고 모두 다시 작성을 선택합니다.

  5. 인덱스 다시 작성 대화 상자에서 다시 작성할 인덱스 표에 올바른 인덱스가 있는지 확인한 다음 확인을 클릭합니다. 다시 작성할 인덱스 표에서 인덱스를 제거하려면 인덱스를 선택한 다음 Delete 키를 누릅니다.

인덱스 다시 작성 대화 상자에는 다음 정보가 표시됩니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]

Transact-SQL 사용

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

  1. 개체 탐색기에서 데이터베이스 엔진 인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    USE AdventureWorks2012;
    GO
    -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table.
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee
    REBUILD; 
    GO
    

CREATE INDEX를 사용하여 비활성화된 인덱스를 활성화하려면

  1. 개체 탐색기에서 데이터베이스 엔진 인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    USE AdventureWorks2012;
    GO
    -- re-creates the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table
    -- using the OrganizationLevel and OrganizationNode columns
    -- and then deletes the existing IX_Employee_OrganizationLevel_OrganizationNode index
    CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee
       (OrganizationLevel, OrganizationNode)
    WITH (DROP_EXISTING = ON);
    GO
    

DBCC DBREINDEX를 사용하여 비활성화된 인덱스를 활성화하려면

  1. 개체 탐색기에서 데이터베이스 엔진 인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    USE AdventureWorks2012; 
    GO
    -- enables the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table
    DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
    GO
    

ALTER INDEX를 사용하여 테이블의 모든 인덱스를 활성화하려면

  1. 개체 탐색기에서 데이터베이스 엔진 인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    USE AdventureWorks2012;
    GO
    -- enables all indexes
    -- on the HumanResources.Employee table
    ALTER INDEX ALL ON HumanResources.Employee
    REBUILD;
    GO
    

DBCC DBREINDEX를 사용하여 테이블의 모든 인덱스를 활성화하려면

  1. 개체 탐색기에서 데이터베이스 엔진 인스턴스에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    USE AdventureWorks2012; 
    GO
    -- enables all indexes
    -- on the HumanResources.Employee table
    DBCC DBREINDEX ("HumanResources.Employee", " ");
    GO
    

자세한 내용은 ALTER INDEX(Transact-SQL), CREATE INDEX(Transact-SQL)DBCC DBREINDEX(Transact-SQL)를 참조하십시오.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]