Membuat indeks dengan kolom yang disertakan
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Topik 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 tidak dipertimbangkan oleh Mesin Database saat 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.
Catatan
Saat indeks berisi semua kolom yang dirujuk oleh kueri, indeks biasanya disebut sebagai mencakup kueri.
Sebelum Anda mulai
Rekomendasi Desain
Desain ulang indeks nonclustered yang memiliki ukuran kunci indeks besar sehingga hanya kolom yang digunakan untuk pencarian dan pencarian yang merupakan kolom kunci. Buat semua kolom lain yang mencakup kueri ke dalam 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 berdampak pada 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.
Pembatasan dan batasan
Kolom non-kunci hanya dapat ditentukan pada indeks nonclustered.
Semua jenis data kecuali teks, ntext, dan gambar dapat digunakan sebagai kolom non-kunci.
Kolom komputasi yang deterministik dan tepat atau tidak tepat dapat berupa kolom non-kunci. Untuk informasi selengkapnya, lihat Indeks pada Kolom Komputasi.
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 NULL ke NULL.
Tingkatkan panjang kolom varchar, nvarchar, atau varbinary .
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 dengan kolom non-kunci
Di Object Explorer, klik tanda plus untuk memperluas database yang berisi tabel tempat Anda ingin membuat indeks dengan kolom non-kunci.
Klik tanda plus untuk memperluas folder Tabel .
Klik 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, klik Tambahkan....
Dalam kotak dialog Pilih Kolom daritable_name , pilih kotak centang atau kotak centang kolom tabel atau kolom yang akan ditambahkan ke indeks.
Klik OK.
Di bawah tab Kolom yang disertakan , klik 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.
Klik OK.
Dalam kotak dialog Indeks Baru, klik OK.
Menggunakan T-SQL
Untuk membuat indeks dengan kolom non-kunci
Di Object Explorer, sambungkan ke instans Mesin Database.
Pada bilah Standar, klik Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan klik 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
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk