Membuat indeks nonclustered
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Anda dapat membuat indeks non-kluster di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Indeks nonclustered adalah struktur indeks yang terpisah dari data yang disimpan dalam tabel yang menyusun ulang satu atau beberapa kolom yang dipilih. Indeks nonclustered sering dapat membantu Anda menemukan data lebih cepat daripada mencari tabel yang mendasar; kueri terkadang dapat dijawab sepenuhnya oleh data dalam indeks nonclustered, atau indeks nonclustered dapat mengarahkan Mesin Database ke baris dalam tabel yang mendasarinya. Umumnya, indeks non-kluster dibuat untuk meningkatkan performa kueri yang sering digunakan yang tidak dicakup oleh indeks berkluster atau untuk menemukan baris dalam tabel tanpa indeks berkluster (disebut timbunan). Anda dapat membuat beberapa indeks nonclustered pada tabel atau tampilan terindeks.
Sebelum Anda mulai
Implementasi umum
Indeks nonclustered diimplementasikan dengan cara berikut:
Batasan UNIK
Saat Anda membuat batasan UNIK, indeks nonclustered unik dibuat untuk memberlakukan batasan UNIK secara default. Anda dapat menentukan indeks berkluster unik jika indeks berkluster pada tabel belum ada. Untuk informasi selengkapnya, lihat Batasan Unik dan Periksa Batasan.
Indeks independen dari batasan
Secara default, indeks non-kluster dibuat jika berkluster tidak ditentukan. Jumlah maksimum indeks nonclustered yang dapat dibuat per tabel adalah 999. Ini termasuk indeks apa pun yang dibuat oleh KUNCI PRIMER atau batasan UNIK, tetapi tidak menyertakan indeks XML.
Indeks nonclustered pada tampilan terindeks
Setelah indeks berkluster unik dibuat pada tampilan, indeks non-kluster dapat dibuat. Untuk informasi selengkapnya, lihat Membuat tampilan terindeks.
Keamanan
Izin
Memerlukan izin ALTER 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
Untuk membuat indeks nonclustered dengan menggunakan Desainer Tabel
Di Object Explorer, perluas database yang berisi tabel tempat Anda ingin membuat indeks nonclustered.
Luaskan folder Tabel.
Klik kanan tabel tempat Anda ingin membuat indeks nonclustered dan pilih Desain.
Klik kanan pada kolom tempat Anda ingin membuat indeks nonclustered dan 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 Berkluster, dan pilih Tidak dari daftar dropdown di sebelah kanan properti.
Pilih Tutup.
Pada menu File , pilih Simpan table_name.
Untuk membuat indeks nonclustered dengan menggunakan Object Explorer
Di Object Explorer, perluas database yang berisi tabel tempat Anda ingin membuat indeks nonclustered.
Luaskan folder Tabel.
Perluas tabel tempat Anda ingin membuat indeks nonclustered.
Klik kanan folder Indeks, arahkan ke Indeks Baru, dan pilih Indeks Non-Kluster....
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 atau kotak centang kolom tabel atau kolom yang akan ditambahkan ke indeks non-klusster.
Pilih OK.
Dalam kotak dialog Indeks Baru, pilih OK.
Menggunakan T-SQL
Untuk membuat indeks non-kluster pada tabel menggunakan Transact-SQL
Di Object Explorer, sambungkan ke instans Mesin Database dengan
AdventureWorks2022
yang terinstal. Anda dapat mengunduhAdventureWorks2022
dari database sampel.Pada bilah Standar, pilih Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan.
USE AdventureWorks2022; GO -- Find an existing index named IX_ProductVendor_VendorID and delete it if found. IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ProductVendor_VendorID') DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor; GO -- Create a nonclustered index called IX_ProductVendor_VendorID -- on the Purchasing.ProductVendor table using the BusinessEntityID column. CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (BusinessEntityID); GO