Aktifkan Indeks dan Batasan

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Topik 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

Dalam Topik Ini

Sebelum Anda mulai

Batasan dan Pembatasan

  • Setelah membangun ulang indeks, batasan apa pun yang dinonaktifkan karena menonaktifkan indeks harus diaktifkan secara manual. Batasan KUNCI PRIMER dan UNIK diaktifkan dengan membangun kembali indeks terkait. Indeks ini harus dibangun kembali (diaktifkan) sebelum Anda dapat mengaktifkan batasan KUNCI ASING yang mereferensikan BATASAN KUNCI PRIMER atau UNIK. Batasan FOREIGN KEY diaktifkan dengan menggunakan pernyataan ALTER TABLE CHECK CONSTRAINT.

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

  • 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 Indeks Nonclustered dinonaktifkan ...
    UBAH PEMBANGUNAN ULANG INDEKS. Tetap dinonaktifkan.
    UBAH INDEKS SEMUA PEMBANGUNAN ULANG. Dibangun kembali dan diaktifkan.
    HILANGKAN INDEKS. Tetap dinonaktifkan.
    BUAT INDEKS DENGAN 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.
    UBAH PEMBANGUNAN ULANG INDEKS. Tindakan gagal. Tindakan berhasil.
    HILANGKAN INDEKS. Tindakan berhasil. Tindakan berhasil.
    BUAT INDEKS DENGAN DROP_EXISTING. Tindakan gagal. Tindakan berhasil.
  • Saat membangun kembali indeks nonclustered terkompresi yang dinonaktifkan, data_compression akan default ke 'none', yang berarti bahwa indeks tidak akan dikompresi. Hal ini disebabkan oleh metadata pengaturan kompresi hilang ketika indeks yang tidak terkluster dinonaktifkan. Untuk mengatasi hal ini, Anda harus menentukan kompresi data eksplisit dalam pernyataan pembangunan ulang.

Keamanan

Izin

Memerlukan izin ALTER pada tabel atau tampilan. Jika menggunakan DBCC DBREINDEX, pengguna harus memiliki tabel; atau menjadi anggota peran server tetap sysadmin ; atau peran database tetap db_ddladmin dan db_owner .

Menggunakan SQL Server Management Studio

Untuk mengaktifkan indeks yang dinonaktifkan

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

  2. Klik tanda plus untuk memperluas folder Tabel .

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

  4. Klik tanda plus untuk memperluas folder Indeks .

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

  6. Dalam kotak dialog Bangun Ulang Indeks , verifikasi bahwa indeks yang benar ada dalam Indeks untuk membangun kembali kisi dan klik OK.

Untuk mengaktifkan semua indeks pada tabel

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

  2. Klik tanda plus untuk memperluas folder Tabel .

  3. Klik 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 dalam Indeks untuk membangun kembali kisi dan klik 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 T-SQL

Untuk mengaktifkan indeks yang dinonaktifkan menggunakan ALTER INDEX

  1. Di Object Explorer, sambungkan ke instans Mesin Database.

  2. Pada bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan.

    USE AdventureWorks2022;  
    GO  
    -- Enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table.  
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
    REBUILD;   
    GO  
    

Untuk mengaktifkan indeks yang dinonaktifkan menggunakan CREATE INDEX

  1. Di Object Explorer, sambungkan ke instans Mesin Database.

  2. Pada bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan.

    USE AdventureWorks2022;  
    GO  
    -- re-creates the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    -- using the OrganizationLevel and OrganizationNode columns  
    -- and then deletes the existing IX_Employee_OrganizationLevel_OrganizationNode index  
    CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
       (OrganizationLevel, OrganizationNode)  
    WITH (DROP_EXISTING = ON);  
    GO  
    

Untuk mengaktifkan indeks yang dinonaktifkan menggunakan DBCC DBREINDEX

  1. Di Object Explorer, sambungkan ke instans Mesin Database.

  2. Pada bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan.

    USE AdventureWorks2022;   
    GO  
    -- enables the IX_Employee_OrganizationLevel_OrganizationNode index  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", IX_Employee_OrganizationLevel_OrganizationNode);  
    GO  
    

Untuk mengaktifkan semua indeks pada tabel menggunakan ALTER INDEX

  1. Di Object Explorer, sambungkan ke instans Mesin Database.

  2. Pada bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan.

    USE AdventureWorks2022;  
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    ALTER INDEX ALL ON HumanResources.Employee  
    REBUILD;  
    GO  
    

Untuk mengaktifkan semua indeks pada tabel menggunakan DBCC DBREINDEX

  1. Di Object Explorer, sambungkan ke instans Mesin Database.

  2. Pada bilah Standar, klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan.

    USE AdventureWorks2022;   
    GO  
    -- enables all indexes  
    -- on the HumanResources.Employee table  
    DBCC DBREINDEX ("HumanResources.Employee", " ");  
    GO  
    

Untuk informasi selengkapnya, lihat ALTER INDEX (Transact-SQL), CREATE INDEX (Transact-SQL), dan DBCC DBREINDEX (Transact-SQL).