Bagikan melalui


Membuat indeks berkluster

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

Anda dapat membuat indeks berkluster pada tabel dengan menggunakan SQL Server Management Studio atau Transact-SQL. Dengan beberapa pengecualian, setiap tabel harus memiliki indeks berkluster. Selain meningkatkan performa kueri, indeks berkluster dapat dibangun kembali atau diatur ulang sesuai permintaan untuk mengontrol fragmentasi tabel. Indeks berkluster juga dapat dibuat pada tampilan. (Indeks terkluster ditentukan dalam artikel Indeks terkluster dan non-kluster.)

Implementasi umum

Indeks berkluster diimplementasikan dengan cara berikut:

  • PRIMARY KEY dan UNIQUE batasan**

    Saat Anda membuat PRIMARY KEY batasan, indeks terkelompok unik pada kolom atau kolom-kolom tersebut secara otomatis dibuat jika belum ada indeks terkelompok pada tabel tersebut dan Anda tidak menetapkan indeks tidak terkelompok yang unik. Kolom kunci utama tidak dapat mengizinkan nilai NULL.

    Saat Anda membuat batasan UNIQUE, indeks nonclustered unik dibentuk untuk menerapkan batasan UNIQUE secara default. Anda dapat menentukan indeks berkluster unik jika indeks berkluster pada tabel belum ada.

    Indeks yang dibuat sebagai bagian dari batasan secara otomatis diberi nama yang sama dengan nama batasan. Untuk informasi selengkapnya, lihat Batasan kunci primer dan asing dan Batasan unik dan periksa batasan.

  • Indeks independen dari batasan

    Anda dapat membuat indeks berkluster pada kolom selain kolom kunci primer jika batasan kunci primer yang di-noncluster ditentukan.

Limitations

  • Ketika struktur indeks berkluster dibuat, ruang disk untuk struktur lama (sumber) dan baru (target) diperlukan dalam file dan grup file masing-masing. Struktur lama tidak dibatalkan alokasinya sampai transaksi lengkap dilakukan. Ruang disk sementara tambahan untuk pengurutan mungkin juga diperlukan. Untuk informasi selengkapnya, lihat Persyaratan Ruang Disk untuk Operasi DDL Indeks.

  • Jika indeks kluster dibuat pada heap dengan beberapa indeks nonkluster yang ada, semua indeks nonkluster harus dibangun kembali sehingga berisi nilai kunci klustering daripada pengidentifikasi baris (RID). Demikian pula, jika indeks berkluster dihilangkan pada tabel yang memiliki beberapa indeks non-kluster, indeks non-kluster semuanya dibangun kembali sebagai bagian DROP dari operasi. Proses ini mungkin memakan waktu yang signifikan pada tabel besar.

    Cara yang disukai untuk membangun indeks pada tabel besar adalah dengan memulai dengan indeks berkluster dan kemudian membangun indeks non-kluster apa pun. Pertimbangkan untuk mengatur opsi ke ONLINEON saat Anda membuat indeks pada tabel yang sudah ada. Saat diatur ke ON, kunci tabel jangka panjang tidak ditahan. Ini memungkinkan kueri atau pembaruan pada tabel yang mendasarinya untuk terus berlanjut. Untuk informasi selengkapnya, lihat Melakukan operasi indeks secara online.

  • Kunci indeks indeks berkluster tidak boleh berisi kolom varchar yang memiliki data yang ada di ROW_OVERFLOW_DATA unit alokasi. Jika indeks berkluster dibuat pada kolom varchar dan data yang ada berada di IN_ROW_DATA unit alokasi, tindakan sisipkan atau perbarui berikutnya pada kolom yang akan memindahkan data keluar dari baris gagal. Untuk mendapatkan informasi tentang tabel yang mungkin berisi data luapan baris, gunakan fungsi manajemen dinamis sys.dm_db_index_physical_stats (Transact-SQL ).

Permissions

Memerlukan izin ALTER pada tabel atau pandangan. Pengguna harus menjadi anggota peran server tetap sysadmin atau peran database tetap db_ddladmin dan db_owner .

Menggunakan SQL Server Management Studio

Membuat indeks berkluster dari Object Explorer

  1. Di Object Explorer, perluas tabel tempat Anda ingin membuat indeks berkluster.

  2. Klik kanan folder Indeks, arahkan ke Indeks Baru, dan pilih Indeks Berkluster....

  3. Dalam kotak dialog Indeks Baru, pada halaman Umum , masukkan nama indeks baru dalam kotak Nama indeks.

  4. Di bawah Kolom kunci indeks, pilih Tambahkan....

  5. Dalam kotak dialog Pilih Kolom daritable_name , pilih kotak centang kolom tabel yang akan ditambahkan ke indeks berkluster.

  6. Pilih OK.

  7. Dalam kotak dialog Indeks Baru, pilih OK.

Membuat indeks berkluster dengan menggunakan Desainer Tabel

  1. Di Object Explorer, perluas database tempat Anda ingin membuat tabel dengan indeks berkluster.

  2. Klik kanan folder Tabel dan pilih Tabel Baru....

  3. Buat tabel baru seperti biasa. Untuk informasi selengkapnya, lihat Membuat tabel (Mesin Database).

  4. Klik kanan tabel baru yang dibuat sebelumnya, dan pilih Desain.

  5. Pada menu Desainer Tabel, pilih Indeks/Kunci.

  6. Dalam kotak dialog Indeks/Kunci , pilih Tambahkan.

  7. Pilih indeks baru dalam kotak teks Kunci Primer/Unik atau Indeks yang Dipilih.

  8. Di kisi, pilih Buat sebagai Terkluster, dan pilih Ya dari daftar dropdown di sebelah kanan properti.

  9. Pilih Tutup.

  10. Pada menu File , pilih Simpantable_name.

Menggunakan Transact-SQL

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

  2. Pada bilah Standar, pilih Kueri Baru.

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

    USE AdventureWorks2022;
    GO
    
    -- Create a new table with three columns.
    CREATE TABLE dbo.TestTable (
        TestCol1 INT NOT NULL,
        TestCol2 NCHAR(10) NULL,
        TestCol3 NVARCHAR(50) NULL
    );
    GO
    
    -- Create a clustered index called IX_TestTable_TestCol1
    -- on the dbo.TestTable table using the TestCol1 column.
    CREATE CLUSTERED INDEX IX_TestTable_TestCol1 ON dbo.TestTable (TestCol1);
    GO
    

Untuk informasi selengkapnya, lihat MEMBUAT INDEKS.