Membuat indeks berkluster
Berlaku untuk: SQL ServerAzure SQL Database Azure 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 mengizinkanNULL
nilai.Saat Anda membuat
UNIQUE
batasan, indeks nonclustered unik dibuat untuk memberlakukanUNIQUE
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.
Batasan
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 diIN_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
Di Object Explorer, perluas tabel tempat Anda ingin membuat indeks berkluster.
Klik kanan folder Indeks, arahkan ke Indeks Baru, dan pilih Indeks Berkluster....
Dalam kotak dialog Indeks Baru, pada halaman Umum , masukkan nama indeks baru dalam kotak Nama indeks.
Di bawah Kolom kunci indeks, pilih Tambahkan....
Dalam kotak dialog Pilih Kolom dari table_name , pilih kotak centang kolom tabel yang akan ditambahkan ke indeks berkluster.
Pilih OK.
Dalam kotak dialog Indeks Baru, pilih OK.
Membuat indeks berkluster dengan menggunakan Desainer Tabel
Di Object Explorer, perluas database tempat Anda ingin membuat tabel dengan indeks berkluster.
Klik kanan folder Tabel dan pilih Tabel Baru....
Buat tabel baru seperti biasa. Untuk informasi selengkapnya, lihat Membuat tabel (Mesin Database).
Klik kanan tabel baru yang dibuat sebelumnya, dan pilih Desain.
Pada menu Desainer Tabel, pilih Indeks/Kunci.
Dalam kotak dialog Indeks/Kunci , pilih Tambahkan.
Pilih indeks baru dalam kotak teks Kunci Primer/Unik atau Indeks yang Dipilih.
Di kisi, pilih Buat sebagai Terkluster, dan pilih Ya dari daftar drop-down di sebelah kanan properti.
Pilih Tutup.
Pada menu File , pilih Simpan table_name.
Menggunakan Transact-SQL
Di Object Explorer, sambungkan ke instans Mesin Database.
Pada bilah Standar, pilih Kueri Baru.
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).