DBCC DBREINDEX (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL Managed Instance

Membangun kembali satu atau beberapa indeks untuk tabel dalam database yang ditentukan.

Penting

Fitur ini akan dihapus dalam versi Microsoft SQL Server mendatang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan ALTER INDEX sebagai gantinya.

Berlaku untuk: SQL Server 2008 (10.0.x) dan versi yang lebih baru.

Konvensi sintaks transact-SQL

Sintaks

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

nama tabel

Nama tabel yang berisi indeks atau indeks yang ditentukan untuk dibangun kembali. Nama tabel harus mengikuti aturan untuk pengidentifikasi.

index_name

Nama indeks yang akan dibangun kembali. Nama indeks harus mematuhi aturan untuk pengidentifikasi. Jika index_name ditentukan, table_name harus ditentukan. Jika index_name tidak ditentukan atau , ' 'semua indeks untuk tabel akan dibangun kembali.

fillfactor

Persentase ruang pada setiap halaman indeks untuk menyimpan data saat indeks dibuat atau dibangun kembali. fillfactor menggantikan faktor pengisian ketika indeks dibuat, menjadi default baru untuk indeks dan untuk indeks non-kluster lainnya dibangun kembali, karena indeks berkluster dibangun kembali.

Saat fillfactor adalah 0, DBCC DBREINDEX menggunakan nilai faktor pengisian yang terakhir ditentukan untuk indeks. Nilai ini disimpan dalam sys.indexes tampilan katalog.

Jika fillfactor ditentukan, table_name dan index_name harus ditentukan. Jika fillfactor tidak ditentukan, faktor pengisian default, 100, digunakan. Untuk informasi selengkapnya, lihat Menentukan Faktor Pengisian untuk Indeks.

DENGAN NO_INFOMSGS

Menekan semua pesan informasi yang memiliki tingkat keparahan dari 0 hingga 10.

Keterangan

DBCC DBREINDEX membangun ulang indeks untuk tabel atau semua indeks yang ditentukan untuk tabel. Dengan memungkinkan indeks dibangun kembali secara dinamis, indeks yang memberlakukan batasan KUNCI PRIMER atau UNIK dapat dibangun kembali tanpa harus menghilangkan dan membuat kembali batasan tersebut. Ini berarti bahwa indeks dapat dibangun kembali tanpa mengetahui struktur tabel atau batasannya. Ini mungkin terjadi setelah salinan data secara massal ke dalam tabel.

DBCC DBREINDEX dapat membangun kembali semua indeks untuk tabel dalam satu pernyataan. Ini lebih mudah daripada mengkoding beberapa DROP INDEX pernyataan dan CREATE INDEX . Karena pekerjaan dilakukan oleh satu pernyataan, DBCC DBREINDEX secara otomatis atomik, sedangkan individu DROP INDEX dan CREATE INDEX pernyataan harus dimasukkan dalam transaksi untuk menjadi atomik. Selain itu, DBCC DBREINDEX menawarkan lebih banyak pengoptimalan daripada individu DROP INDEX dan CREATE INDEX pernyataan.

Tidak seperti DBCC INDEXDEFRAG, atau ALTER INDEX dengan REORGANIZE opsi , DBCC DBREINDEX adalah operasi offline. Jika indeks non-kluster sedang dibangun kembali, kunci bersama ditahan pada tabel yang dimaksud selama operasi. Ini mencegah modifikasi pada tabel. Jika indeks berkluster sedang dibangun kembali, kunci tabel eksklusif akan ditahan. Ini mencegah akses tabel apa pun, oleh karena itu secara efektif membuat tabel offline. Untuk melakukan pembangunan ulang indeks secara online, atau untuk mengontrol tingkat paralelisme selama operasi pembangunan ulang indeks, gunakan ALTER INDEX REBUILD pernyataan dengan ONLINE opsi .

Untuk informasi selengkapnya tentang memilih metode untuk membangun kembali atau mengatur ulang indeks, lihat Mengatur ulang dan Membangun Ulang Indeks.

Batasan

DBCC DBREINDEX tidak didukung untuk digunakan pada objek berikut:

  • Tabel sistem
  • Indeks spasial
  • indeks penyimpan kolom yang dioptimalkan memori

Tataan hasil

Kecuali NO_INFOMSGS ditentukan (nama tabel harus ditentukan), DBCC DBREINDEX selalu mengembalikan:

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

Izin

Pemanggil harus memiliki tabel, atau menjadi anggota peran server tetap sysadmin , peran database tetap db_owner , atau peran database tetap db_ddladmin .

Contoh

A. Menyusun ulang indeks

Contoh berikut membangun Employee_EmployeeID kembali indeks berkluster dengan faktor pengisian 80 pada Employee tabel dalam AdventureWorks2022 database.

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

B. Membangun kembali semua indeks

Contoh berikut membangun kembali semua indeks pada Employee tabel dengan AdventureWorks2022 menggunakan nilai faktor pengisian 70.

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

Lihat juga