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.
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