DBCC DBREINDEX (Transact-SQL)
Применимо к: SQL Server Управляемый экземпляр SQL Azure
Перестраивает один или более индексов для таблицы в указанной базе данных.
Важно!
В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Используйте вместо нее инструкцию ALTER INDEX.
Применимо к: SQL Server 2008 (10.0.x) и более поздних версий.
Соглашения о синтаксисе Transact-SQL
Синтаксис
DBCC DBREINDEX
(
table_name
[ , index_name [ , fillfactor ] ]
)
[ WITH NO_INFOMSGS ]
Примечание
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
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.
Remarks
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
не поддерживается для использования в следующих объектах:
- Системные таблицы
- Пространственные индексы
- Индексы columnstore, оптимизированные для памяти
Наборы результатов
NO_INFOMSGS
Если параметр не указан (необходимо указать имя таблицы), DBCC DBREINDEX
всегда возвращает следующее:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Разрешения
Вызывающий должен быть владельцем таблицы, членом предопределенной роли сервера sysadmin, предопределенной роли базы данных db_owner или предопределенной роли базы данных db_ddladmin.
Примеры
A. Перестроение индекса
В следующем примере перестраивается кластеризованный индекс Employee_EmployeeID
с коэффициентом заполнения 80
для таблицы Employee
базы данных AdventureWorks2022
.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_BusinessEntityID, 80);
GO
Б. Перестроение всех индексов
В следующем примере перестраиваются все индексы для таблицы Employee
базы данных AdventureWorks2022
при значении коэффициента заполнения 70
.
USE AdventureWorks2022;
GO
DBCC DBREINDEX ('HumanResources.Employee', ' ', 70);
GO