Bagikan melalui


Mengaktifkan indeks dan batasan

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Artikel ini menjelaskan cara mengaktifkan indeks yang dinonaktifkan di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Setelah indeks dinonaktifkan, indeks tetap dalam status dinonaktifkan hingga dibangun kembali atau dihilangkan.

Limitations

Setelah indeks dibangun kembali, batasan apa pun yang dinonaktifkan karena menonaktifkan indeks harus diaktifkan secara manual. PRIMARY KEY dan UNIQUE batasan diaktifkan dengan membangun kembali indeks terkait. Indeks ini harus dibangun ulang dan diaktifkan sebelum Anda dapat mengaktifkan batasan yang mereferensikan FOREIGN KEY, PRIMARY KEY, atau UNIQUE. FOREIGN KEY batasan diaktifkan dengan menggunakan ALTER TABLE CHECK CONSTRAINT perintah.

Membangun kembali indeks berkluster yang dinonaktifkan tidak dapat dilakukan saat ONLINE opsi diatur ke ON.

Ketika indeks berkluster dinonaktifkan atau diaktifkan dan indeks non-kluster dinonaktifkan, tindakan indeks berkluster memiliki hasil berikut pada indeks non-kluster yang dinonaktifkan.

Tindakan indeks berkluster Status indeks nonkluster yang dinonaktifkan
ALTER INDEX REBUILD Tetap dinonaktifkan
ALTER INDEX ALL REBUILD Dibangun ulang dan diaktifkan
DROP INDEX Dibangun ulang dan diaktifkan
CREATE INDEX WITH DROP_EXISTING Tetap dinonaktifkan

Membuat indeks berkluster baru berulah sama dengan ALTER INDEX ALL REBUILD.

Tindakan yang diizinkan pada indeks non-kluster yang terkait dengan indeks berkluster bergantung pada status, baik dinonaktifkan atau diaktifkan, dari kedua jenis indeks. Tabel berikut ini meringkas tindakan yang diizinkan pada indeks nonclustered.

Tindakan indeks nonclustered Ketika indeks berkluster dan non-kluster dinonaktifkan Ketika indeks berkluster diaktifkan dan indeks non-kluster berada dalam salah satu status
ALTER INDEX REBUILD Tindakan gagal Tindakan berhasil
DROP INDEX Tindakan berhasil Tindakan berhasil
CREATE INDEX WITH DROP_EXISTING Tindakan gagal Tindakan berhasil

Saat membangun kembali indeks nonclustered terkompresi yang dinonaktifkan, data_compression secara default berubah menjadi none, yang berarti bahwa indeks tidak dikompresi. Hal ini disebabkan oleh metadata pengaturan kompresi hilang ketika indeks yang tidak terkluster dinonaktifkan. Untuk mengatasi masalah ini, Anda harus menentukan kompresi data eksplisit dalam pernyataan pembangunan ulang.

Permissions

Memerlukan izin ALTER pada tabel atau pandangan. Jika menggunakan DBCC DBREINDEX, Anda harus memiliki tabel atau menjadi anggota peran server tetap sysadmin , atau anggota peran database tetap db_ddladmin atau db_owner .

Menggunakan SQL Server Management Studio

Mengaktifkan indeks yang dinonaktifkan

  1. Di Object Explorer, pilih tanda plus untuk memperluas database yang berisi tabel tempat Anda ingin mengaktifkan indeks.

  2. Pilih tanda plus untuk memperluas folder Tabel .

  3. Pilih tanda plus untuk memperluas tabel tempat Anda ingin mengaktifkan indeks.

  4. Pilih tanda plus untuk memperluas folder Indeks .

  5. Klik kanan indeks yang ingin Anda aktifkan dan pilih Bangun ulang.

  6. Dalam kotak dialog Bangun Kembali Indeks, verifikasi bahwa indeks yang benar ada di Indeks untuk dibangun kembali daftar dan pilih OK.

Mengaktifkan semua indeks pada tabel

  1. Di Object Explorer, pilih tanda plus untuk memperluas database yang berisi tabel tempat Anda ingin mengaktifkan indeks.

  2. Pilih tanda plus untuk memperluas folder Tabel .

  3. Pilih tanda plus untuk memperluas tabel tempat Anda ingin mengaktifkan indeks.

  4. Klik kanan folder Indeks dan pilih Bangun Ulang Semua.

  5. Dalam kotak dialog Bangun Ulang Indeks , verifikasi bahwa indeks yang benar ada di Indeks untuk membangun kembali kisi dan pilih OK. Untuk menghapus indeks dari Indeks untuk membangun kembali kisi, pilih indeks lalu tekan tombol Hapus.

Informasi berikut ini tersedia dalam kotak dialog Bangun Ulang Indeks :

Menggunakan Transact-SQL

Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.

Mengaktifkan indeks yang dinonaktifkan menggunakan ALTER INDEX

Jalankan skrip Transact-SQL berikut. Contoh ini mengaktifkan indeks IX_Employee_OrganizationLevel_OrganizationNode pada tabel HumanResources.Employee.

USE AdventureWorks2022;
GO

ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee REBUILD;
GO

Mengaktifkan indeks yang dinonaktifkan menggunakan CREATE INDEX

Jalankan skrip Transact-SQL berikut. Contoh ini membuat ulang indeks IX_Employee_OrganizationLevel_OrganizationNode pada tabel HumanResources.Employee, menggunakan kolom OrganizationLevel dan OrganizationNode, lalu menghapus indeks IX_Employee_OrganizationLevel_OrganizationNode yang ada.

USE AdventureWorks2022;
GO

CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode
ON HumanResources.Employee(OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON);
GO

Mengaktifkan indeks yang dinonaktifkan menggunakan DBCC DBREINDEX

Note

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Jalankan skrip Transact-SQL berikut. Contoh ini mengaktifkan indeks IX_Employee_OrganizationLevel_OrganizationNode pada tabel HumanResources.Employee.

USE AdventureWorks2022;
GO

DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);
GO

Mengaktifkan semua indeks pada tabel menggunakan ALTER INDEX

Jalankan skrip Transact-SQL berikut. Contoh ini mengaktifkan semua indeks pada tabel HumanResources.Employee.

USE AdventureWorks2022;
GO

ALTER INDEX ALL
ON HumanResources.Employee REBUILD;
GO

Mengaktifkan semua indeks pada tabel menggunakan DBCC DBREINDEX

Note

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

Jalankan skrip Transact-SQL berikut. Contoh ini mengaktifkan semua indeks pada tabel HumanResources.Employee.

USE AdventureWorks2022;
GO

DBCC DBREINDEX ("HumanResources.Employee", " ");
GO