Bagikan melalui


Membuat indeks nonclustered

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

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:

  • UNIQUE Kendala**

    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. 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 PRIMARY KEY atau UNIQUE batasan, 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

Permissions

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 nonclustered dengan menggunakan Table Designer

  1. Di Object Explorer, perluas database yang berisi tabel tempat Anda ingin membuat indeks nonclustered.

  2. Luaskan folder Tabel.

  3. Klik kanan tabel tempat Anda ingin membuat indeks nonclustered dan pilih Desain.

  4. Klik kanan pada kolom tempat Anda ingin membuat indeks nonclustered dan pilih Indeks/Kunci.

  5. Dalam kotak dialog Indeks/Kunci , pilih Tambahkan.

  6. Pilih indeks baru dalam kotak teks Kunci Primer/Unik atau Indeks yang Dipilih.

  7. Pada tabel, pilih Buat sebagai Berkluster, lalu pilih Tidak dari daftar dropdown di sebelah kanan opsi.

  8. Pilih Tutup.

  9. Pada menu File , pilih Simpantable_name.

Membuat indeks nonclustered dengan menggunakan Object Explorer

  1. Di Object Explorer, perluas database yang berisi tabel tempat Anda ingin membuat indeks nonclustered.

  2. Luaskan folder Tabel.

  3. Perluas tabel tempat Anda ingin membuat indeks nonclustered.

  4. Klik kanan folder Indeks, arahkan ke Indeks Baru, dan pilih Indeks Non-Kluster....

  5. Dalam kotak dialog Indeks Baru, pada halaman Umum , masukkan nama indeks baru dalam kotak Nama indeks.

  6. Di bawah Kolom kunci indeks, pilih Tambahkan....

  7. Dalam kotak dialog Pilih Kolom daritable_name, pilih kotak centang untuk kolom atau kolom tabel yang akan ditambahkan ke indeks non-kluster.

  8. Pilih OK.

  9. Dalam kotak dialog Indeks Baru, pilih OK.

Menggunakan Transact-SQL

Membuat indeks nonclustered pada tabel menggunakan Transact-SQL

  1. Di Object Explorer, sambungkan ke instans Mesin Database dengan AdventureWorks2025 yang sudah terinstal. Anda dapat mengunduh AdventureWorks2025 dari database sampel.

  2. Pada bilah Standar, pilih Kueri Baru.

  3. 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