DBCC DBREINDEX (Transact-SQL)

Перестраивает один или более индексов для таблицы в указанной базе данных.

ms181671.note(ru-ru,SQL.90).gifВажно!
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Используйте вместо этого инструкцию ALTER INDEX.

Значок ссылки на разделСоглашения о синтаксическом обозначении в Transact-SQL

Синтаксис

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

Аргументы

  • table_name
    Имя таблицы, для которой нужно перестроить указанный индекс или индексы. Имена таблиц должны соответствовать правилам для идентификаторов.
  • index_name
    Имя перестраиваемого индекса. Имена индексов должны соответствовать требованиям, предъявляемым к идентификаторам. Если указан аргумент index_name, необходимо также задать аргумент table_name. Если аргумент index_name не задан или имеет значение '', перестраиваются все индексы данной таблицы.
  • fillfactor
    Процент пространства на каждой из страниц индекса, используемый для хранения данных при создании или перестроении индекса. Аргумент fillfactor заменяет коэффициент заполнения, указанный при создании индекса, и становится новым значением по умолчанию для данного индекса и любых других некластеризованных индексов, перестраиваемых из-за перестроения кластеризованного индекса. Если значение аргумента fillfactor равно 0, в инструкции DBCC DBREINDEX используется последнее указанное значение коэффициента заполнения для индекса. Это значение хранится в представлении каталога sys.indexes.

    Если указан аргумент fillfactor, необходимо также задать аргументы table_name и index_name. Если аргумент fillfactor не задан, используется установленный по умолчанию коэффициент заполнения 100. Дополнительные сведения см. в разделе Коэффициент заполнения.

  • WITH NO_INFOMSGS
    Подавляет все информационные сообщения с степенями серьезности от 0 до 10.

Результирующие наборы

Если задан любой из параметров, кроме NO_INFOMSGS (имя таблицы задавать необходимо), инструкция DBCC DBREINDEX возвращает:

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

Замечания

Инструкция DBCC DBREINDEX выполняет перестроение индекса для таблицы или всех индексов, определенных для таблицы. При разрешенном динамическом перестроении индекса индексы с ограничениями PRIMARY KEY или UNIQUE можно перестраивать без необходимости удаления и повторного создания этих ограничений. Это значит, что индекс может быть перестроен без необходимости знания структуры таблицы или ее ограничений. Потребность в этом может возникнуть после массового копирования данных в таблицу.

Инструкция DBCC DBREINDEX позволяет перестроить все индексы таблицы с помощью одной инструкции. Это проще, чем кодирование множества инструкций DROP INDEX и CREATE INDEX. Так как работа выполняется одной инструкцией, DBCC DBREINDEX автоматически становится атомарной; в то время как отдельные инструкции DROP INDEX и CREATE INDEX необходимо включить в транзакцию, чтобы они стали атомарными. Кроме того, инструкция DBCC DBREINDEX дает большее преимущество в оптимизации по сравнению с отдельными инструкциями DROP INDEX и CREATE INDEX.

В отличие от инструкций DBCC INDEXDEFRAG или от ALTER INDEX с параметром REORGANIZE, DBCC DBREINDEX является автономной операцией. Если перестраивается некластеризованный индекс, для запрашиваемой таблицы в течение операции удерживается совместная блокировка. Это предотвращает изменения в таблице. Если перестраивается кластеризованный индекс, удерживается монопольная блокировка таблицы. Это предотвращает какой-либо доступ к таблице, делая ее автономной. Для оперативного перестроения индекса используется инструкция ALTER INDEX REBUILD с параметром ONLINE; она также используется для управления степенью параллелизма в течение операции перестроения индекса.

Дополнительные сведения о выборе метода перестроения или реорганизации индекса см. в разделе Реорганизация и перестроение индексов.

Использование инструкции DBCC DBREINDEX для системных таблиц не поддерживается.

Разрешения

Может вызываться либо владельцем таблицы, либо членом предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner или db_ddladmin.

Примеры

А. Перестроение индекса

В следующем примере перестраивается кластеризованный индекс Employee_EmployeeID с коэффициентом заполнения 80 для таблицы Employee базы данных AdventureWorks.

USE AdventureWorks; 
GO
DBCC DBREINDEX ("HumanResources.Employee", PK_Employee_EmployeeID,80);
GO

Б. Перестроение всех индексов

В следующем примере перестраиваются все индексы для таблицы Employee базы данных AdventureWorks при значении коэффициента заполнения 70.

USE AdventureWorks; 
GO
DBCC DBREINDEX ("HumanResources.Employee", " ", 70);
GO

См. также

Справочник

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

Другие ресурсы

Архитектура таблиц и индексов

Справка и поддержка

Получение помощи по SQL Server 2005