Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Artikel ini menjelaskan cara menambahkan kolom yang disertakan (atau non-kunci) untuk memperluas fungsionalitas indeks non-kluster di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Dengan menyertakan kolom non-kunci, Anda dapat membuat indeks nonclustered yang mencakup lebih banyak kueri. Ini karena kolom non-kunci memiliki manfaat berikut:
- Mereka bisa menjadi jenis data yang tidak diizinkan sebagai kolom kunci indeks.
- Kolom-kolom tersebut tidak dipertimbangkan oleh Mesin Database ketika menghitung jumlah kolom kunci indeks atau ukuran kunci indeks.
Indeks dengan kolom non-kunci dapat secara signifikan meningkatkan performa kueri ketika semua kolom dalam kueri disertakan dalam indeks baik sebagai kolom kunci atau non-kunci. Perolehan performa dicapai karena pengoptimal kueri dapat menemukan semua nilai kolom dalam indeks; tabel atau data indeks terkluster tidak diakses sehingga menghasilkan lebih sedikit operasi I/O disk.
Note
Saat indeks berisi semua kolom yang dirujuk oleh kueri, indeks biasanya disebut sebagai mencakup kueri.
Rekomendasi Desain
Desain ulang indeks nonclustered yang ukuran kunci indeksnya besar sehingga hanya kolom yang digunakan untuk pencarian dan pengambilan data yang menjadi kolom kunci. Ubah semua kolom lain yang terkait dengan kueri menjadi kolom non-kunci. Dengan cara ini, Anda akan memiliki semua kolom yang diperlukan untuk mencakup kueri, tetapi kunci indeks itu sendiri kecil dan efisien.
Sertakan kolom non-kunci dalam indeks non-kluster untuk menghindari melebihi batasan ukuran indeks saat ini dari maksimum 32 kolom kunci dan ukuran kunci indeks maksimum 1.700 byte (16 kolom kunci dan 900 byte sebelum SQL Server 2016 (13.x)). Mesin Database tidak mempertimbangkan kolom non-kunci saat menghitung jumlah kolom kunci indeks atau ukuran kunci indeks.
Urutan kolom non-kunci dalam definisi indeks tidak memengaruhi performa kueri yang menggunakan indeks.
Hindari indeks non-kluster yang sangat luas di mana kolom yang disertakan tidak mewakili subset kolom tabel yang mendasarinya yang cukup sempit. Jika menambahkan indeks lebar, selalu verifikasi apakah biaya memperbarui satu indeks ekstra lebar mengimbangi biaya pembacaan langsung dari tabel.
Keterbatasan
Kolom non-kunci hanya dapat ditentukan pada indeks non-klaster.
Semua jenis data kecuali teks, ntext, dan gambar dapat digunakan sebagai kolom non-kunci.
Kolom terhitung yang deterministik dan baik tepat maupun tidak tepat dapat menjadi kolom tanpa kunci. Untuk informasi selengkapnya, lihat Indeks pada kolom terhitung.
Kolom komputasi yang berasal dari tipe data gambar, ntext, dan teks dapat berupa kolom non-kunci selama jenis data kolom komputasi diizinkan sebagai kolom indeks non-kunci.
Kolom non-kunci tidak dapat dihilangkan dari tabel kecuali indeks tabel tersebut dihilangkan terlebih dahulu.
Kolom non-kunci tidak dapat diubah, kecuali untuk melakukan hal berikut:
Ubah nullability kolom dari
NOT NULLkeNULL.Tingkatkan panjang kolom varchar, nvarchar, atau varbinary .
Keamanan
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 untuk membuat indeks dengan kolom non-kunci
Di Object Explorer, pilih tanda plus untuk memperluas database yang berisi tabel tempat Anda ingin membuat indeks dengan kolom non-kunci.
Pilih tanda plus untuk memperluas folder Tabel .
Pilih tanda plus untuk memperluas tabel tempat Anda ingin membuat indeks dengan kolom non-kunci.
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 tab Kolom kunci indeks, pilih Tambah....
Dalam kotak dialog Pilih Kolom daritable_name, pilih kotak centang kolom tabel yang akan ditambahkan ke indeks.
Pilih OK.
Di bawah tab Kolom yang disertakan , pilih Tambahkan....
Dalam kotak dialog Pilih Kolom daritable_name , pilih kotak centang atau kotak centang kolom tabel atau kolom yang akan ditambahkan ke indeks sebagai kolom non-kunci.
Pilih OK.
Dalam kotak dialog Indeks Baru, pilih OK.
Menggunakan Transact-SQL untuk membuat indeks dengan kolom non-kunci
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 -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns. -- index key column is PostalCode and the nonkey columns are -- AddressLine1, AddressLine2, City, and StateProvinceID. CREATE NONCLUSTERED INDEX IX_Address_PostalCode ON Person.Address (PostalCode) INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID); GO