DBCC DBREINDEX(Transact-SQL)DBCC DBREINDEX (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

지정한 데이터베이스의 테이블에 대해 하나 이상의 인덱스를 다시 작성합니다.Rebuilds one or more indexes for a table in the specified database.

중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다.This feature will be removed in a future version of Microsoft SQL Server. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하세요.Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible. 대신 ALTER INDEX를 사용합니다. Use ALTER INDEX instead.

적용 대상: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 ~ 현재 버전).Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 through current version)

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

DBCC DBREINDEX   
(   
    table_name   
    [ , index_name [ , fillfactor ] ]  
)  
    [ WITH NO_INFOMSGS ]   

인수Arguments

table_nametable_name
다시 작성할 지정 인덱스를 포함하는 테이블의 이름입니다.Is the name of the table containing the specified index or indexes to rebuild. 테이블 이름은 식별자에 적용되는 규칙을 따라야 합니다.Table names must follow the rules for identifiers.

index_nameindex_name
다시 작성할 인덱스의 이름입니다.Is the name of the index to rebuild. 인덱스 이름은 식별자에 대한 규칙을 따라야 합니다.Index names must comply with the rules for identifiers. index_name을 지정한 경우 table_name을 지정해야 합니다.If index_name is specified, table_name must be specified. index_name을 지정하지 않거나 해당 이름이 " "이면 테이블의 모든 인덱스가 다시 작성됩니다.If index_name is not specified or is " ", all indexes for the table are rebuilt.

fillfactorfillfactor
인덱스를 만들거나 다시 작성할 때 데이터를 저장하는 데 사용할 각 인덱스 페이지의 공간에 대한 백분율입니다.Is the percentage of space on each index page for storing data when the index is created or rebuilt. fillfactor는 인덱스 생성 시 채우기 비율을 대체하여 클러스터형 인덱스를 다시 작성하기 때문에 다시 작성되는 인덱스 및 다른 모든 비클러스터형 인덱스의 새 기본값이 됩니다.fillfactor replaces the fill factor when the index was created, becoming the new default for the index and for any other nonclustered indexes rebuilt because a clustered index is rebuilt.
fillfactor가 0인 경우 DBCC DBREINDEX는 인덱스에 최근 지정한 채우기 비율 값을 사용합니다.When fillfactor is 0, DBCC DBREINDEX uses the fill factor value last specified for the index. 이 값은 sys.indexes 카탈로그 뷰에 저장됩니다.This value is stored in the sys.indexes catalog view.
fillfactor를 지정한 경우 table_nameindex_name을 지정해야 합니다.If fillfactor is specified, table_name and index_name must be specified. fillfactor를 지정하지 않으면 기본 채우기 비율인 100이 사용됩니다.If fillfactor is not specified, the default fill factor, 100, is used. 자세한 내용은 인덱스의 채우기 비율 지정을 참조하세요.For more information, see Specify Fill Factor for an Index.

WITH NO_INFOMSGSWITH NO_INFOMSGS
심각도가 0에서 10 사이인 모든 정보 메시지를 표시하지 않습니다.Suppresses all informational messages that have severity levels from 0 through 10.

RemarksRemarks

DBCC DBREINDEX는 테이블의 특정 인덱스나 테이블에 정의된 모든 인덱스를 다시 작성합니다.DBCC DBREINDEX rebuilds an index for a table or all indexes defined for a table. DBCC DBREINDEX는 인덱스를 동적으로 다시 작성할 수 있도록 하므로 PRIMARY KEY나 UNIQUE 제약 조건을 보장하는 인덱스를 다시 작성할 때 기존 제약 조건을 삭제하고 다시 만들 필요가 없습니다.By allowing an index to be rebuilt dynamically, indexes enforcing either PRIMARY KEY or UNIQUE constraints can be rebuilt without having to drop and re-create those constraints. 이는 테이블의 구조나 해당 제약 조건에 대한 정보가 없이도 인덱스를 다시 작성할 수 있음을 의미합니다.This means that an index can be rebuilt without knowing the structure of a table or its constraints. 이 과정은 테이블로 데이터를 대량 복사한 후 발생할 수 있습니다.This might occur after a bulk copy of data into the table.

DBCC DBREINDEX를 사용하면 하나의 문으로 한 테이블에 대한 모든 인덱스를 다시 작성할 수 있으며DBCC DBREINDEX can rebuild all the indexes for a table in one statement. 이는 DROP INDEX 및 CREATE INDEX 문을 여러 번 코딩하는 것보다 쉽습니다.This is easier than coding multiple DROP INDEX and CREATE INDEX statements. 각 DROP INDEX와 CREATE INDEX 문이 원자성을 가지려면 트랜잭션을 사용해야 하는 반면 DBCC DBREINDEX는 하나의 문에서 작업이 수행되므로 자동으로 원자성을 갖습니다.Because the work is performed by one statement, DBCC DBREINDEX is automatically atomic, whereas individual DROP INDEX and CREATE INDEX statements must be included in a transaction to be atomic. 또한 DBCC DBREINDEX는 개별 DROP INDEX 및 CREATE INDEX 문보다 더 많은 최적화를 제공합니다.Also, DBCC DBREINDEX offers more optimizations than individual DROP INDEX and CREATE INDEX statements.

DBCC INDEXDEFRAG 또는 REORGANIZE 옵션을 가진 ALTER INDEX와는 달리 DBCC DBREINDEX는 오프라인 작업입니다.Unlike DBCC INDEXDEFRAG, or ALTER INDEX with the REORGANIZE option, DBCC DBREINDEX is an offline operation. 비클러스터형 인덱스를 다시 작성하는 경우 작업 중에 해당 테이블에 공유 잠금이 유지됩니다.If a nonclustered index is being rebuilt, a shared lock is held on the table in question for the duration of the operation. 이렇게 하면 테이블을 수정할 수 없습니다.This prevents modifications to the table. 클러스터형 인덱스를 다시 작성하는 경우 배타적 테이블 잠금이 설정됩니다.If the clustered index is being rebuilt, an exclusive table lock is held. 이 작업은 테이블에 액세스할 수 없게 하므로 결과적으로 테이블을 오프라인 상태로 만듭니다.This prevents any table access, therefore effectively making the table offline. 온라인 상태로 인덱스를 다시 작성하거나 인덱스 다시 작성 작업 중에 병렬 처리 수준을 제어하려면 ALTER INDEX REBUILD 문에 ONLINE 옵션을 사용합니다.To perform an index rebuild online, or to control the degree of parallelism during the index rebuild operation, use the ALTER INDEX REBUILD statement with the ONLINE option.

인덱스를 다시 작성하거나 다시 구성하는 방법을 선택하는 데 대한 자세한 내용은 인덱스 다시 구성 및 다시 작성을 참조하십시오.For more information about selecting a method to rebuild or reorganize an index, see Reorganize and Rebuild Indexes .

RestrictionsRestrictions

DBCC DBREINDEX는 다음 개체에 대해 사용할 수 없습니다.DBCC DBREINDEX is not supported for use on the following objects:

  • 시스템 테이블System tables
  • 공간 인덱스Spatial indexes
  • xVelocity 메모리 최적화 columnstore 인덱스xVelocity memory optimized columnstore indexes

결과 집합Result Sets

NO_INFOMSGS가 지정되지 않은 한(테이블 이름이 지정되어야 함) DBCC DBREINDEX는 항상 다음을 반환합니다.Unless NO_INFOMSGS is specified (the table name must be specified), DBCC DBREINDEX always returns:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.  

사용 권한Permissions

호출자는 테이블을 소유하거나, sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.Caller must own the table, or be a member of the sysadmin fixed server role, the db_owner fixed database role, or the db_ddladmin fixed database role.

Examples

1.A. 인덱스 다시 작성Rebuilding an index

다음 예에서는 Employee_EmployeeID 데이터베이스의 80 테이블에 채우기 비율 EmployeeAdventureWorks 클러스터형 인덱스를 다시 작성하는 방법을 보여 줍니다.The following example rebuilds the Employee_EmployeeID clustered index with a fill factor of 80 on the Employee table in the AdventureWorks database.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID,80);  
GO  

2.B. 모든 인덱스 다시 작성Rebuilding all indexes

다음 예에서는 채우기 비율 값 Employee을 사용하여 AdventureWorks70 테이블에서 모든 인덱스를 다시 작성하는 방법을 보여 줍니다.The following example rebuilds all indexes on the Employee table in AdventureWorks by using a fill factor value of 70.

USE AdventureWorks2012;   
GO  
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);  
GO  

참고 항목See Also

ALTER TABLE(Transact-SQL)ALTER TABLE (Transact-SQL)
CREATE TABLE(Transact-SQL)CREATE TABLE (Transact-SQL)
DBCC(Transact-SQL)DBCC (Transact-SQL)
sys.indexes(Transact-SQL)sys.indexes (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)sys.dm_db_index_physical_stats (Transact-SQL)
ALTER INDEX(Transact-SQL)ALTER INDEX (Transact-SQL)