Bagikan melalui


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

  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. Di kisi, pilih Buat sebagai Berkluster, dan pilih Tidak dari daftar dropdown di sebelah kanan properti.

  8. Pilih Tutup.

  9. Pada menu File , pilih Simpan table_name.

Untuk 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 dari table_name , pilih kotak centang atau kotak centang kolom tabel atau kolom yang akan ditambahkan ke indeks non-klusster.

  8. Pilih OK.

  9. Dalam kotak dialog Indeks Baru, pilih OK.

Menggunakan T-SQL

Untuk membuat indeks non-kluster pada tabel menggunakan Transact-SQL

  1. Di Object Explorer, sambungkan ke instans Mesin Database dengan AdventureWorks2022 yang terinstal. Anda dapat mengunduh AdventureWorks2022 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