Membuat indeks berkluster

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

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:

  • Batasan KUNCI PRIMER dan UNIK

    Saat Anda membuat PRIMARY KEY batasan, indeks berkluster unik pada kolom atau kolom secara otomatis dibuat jika indeks berkluster pada tabel belum ada dan Anda tidak menentukan indeks nonclustered unik. Kolom kunci utama tidak dapat mengizinkan NULL nilai.

    Saat Anda membuat UNIQUE batasan, indeks nonclustered unik dibuat untuk memberlakukan UNIQUE batasan 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 Utama 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.

Pembatasan

  • 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 berkluster dibuat pada timbunan dengan beberapa indeks nonclustered yang ada, semua indeks yang tidak terkluster harus dibangun kembali sehingga berisi nilai kunci pengklusteran alih-alih 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 ONLINE opsi ke AKTIF saat Anda membuat indeks pada tabel yang sudah ada. Saat diatur ke AKTIF, kunci tabel jangka panjang tidak ditahan. Ini memungkinkan kueri atau pembaruan ke tabel yang mendasarinya untuk melanjutkan. Untuk informasi selengkapnya, lihat Melakukan Operasi Indeks 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 mendorong data 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 ).

Izin

ALTER Memerlukan izin pada tabel atau tampilan. 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 drop-down 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 (Transact-SQL).