Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Indeks membantu SQL Server mengambil data dari baris dengan cepat. Indeks berfungsi seperti daftar isi di awal buku, memungkinkan Anda mencari halaman topik dengan cepat. Tanpa indeks, SQL Server harus memindai semua baris dalam tabel untuk menemukan catatan.

Ada dua jenis indeks di SQL Server: berkerumun dan tidak berkerumun. Cari tahu perbedaan antara indeks berkerumun dan tidak berkerumun dan mengapa itu penting.

Indeks Berkelompok di SQL Server

Dalam indeks berkerumun, baris data secara fisik disimpan secara terurut berdasarkan nilai kunci. Karena indeks menyertakan tabel dan hanya dapat mengatur baris dalam satu urutan, Anda hanya dapat membuat satu indeks berkerumun per tabel.

Sementara indeks membuat pengambilan baris dalam rentang lebih cepat, Pernyataan INSERT dan UPDATE mungkin lambat karena pengoptimal kueri memindai indeks hingga menemukan indeks target.

instagram viewer

Indeks Non-Cluster di SQL Server

Indeks non-cluster berisi nilai-nilai kunci yang masuknya adalah penunjuk yang disebut pencari baris. Untuk tabel berkerumun (tabel dengan indeks berkerumun), pointer menunjuk ke kunci dalam indeks berkerumun yang pada gilirannya menunjuk ke baris dalam tabel. Untuk baris tanpa indeks berkerumun, pointer menunjuk langsung ke baris tabel.

Cara Membuat Indeks Berkelompok di SQL Server

Saat Anda membuat tabel dengan kunci utama, SQL Server secara otomatis membuat kunci indeks tergugus berdasarkan kunci utama tersebut. Jika Anda tidak memiliki kunci utama, Anda dapat menjalankan pernyataan berikut untuk membuat kunci indeks berkerumun.

MEMBUAT BERKELUPASAN INDEKS <indeksnama>
DIATAS MEJA <table_name>(nama kolom)

Dalam pernyataan ini, Anda menentukan nama indeks, nama tabel tempat pembuatannya, dan nama kolom yang akan digunakan dalam indeks.

Jika Anda menambahkan kunci utama ke tabel yang sudah memiliki indeks berkerumun, SQL Server akan membuat indeks non-berkerumun dengannya.

Untuk membuat indeks berkerumun yang tidak menyertakan kolom kunci utama, Anda harus menghapus batasan kunci utama terlebih dahulu.

MENGGUNAKANnama_database
MENGUBAHMEJA table_name
MENJATUHKANPAKSAAN pk_name
PERGI

Menghapus batasan kunci utama juga menghapus indeks berkerumun yang memungkinkan Anda membuat yang khusus.

Cara Membuat Indeks Non-Clustered di SQL Server

Untuk membuat indeks non-cluster, gunakan pernyataan berikut.

MEMBUATINDEKS <indeksnama>
DIATAS MEJA <table_name>(nama kolom)

Anda juga dapat menggunakan kata kunci NONCLUSTERED seperti ini:

MEMBUAT [NONCLUSTERED] INDEKS <indeksnama>
DIATAS MEJA <table_name>(nama kolom)

Pernyataan ini membuat indeks non-cluster di tabel yang Anda tentukan dan menyertakan kolom yang Anda tunjukkan.

Jika mau, Anda dapat mengurutkan kolom dalam urutan menaik (ASC) atau menurun (DESC).

MEMBUAT [NONCLUSTERED] INDEKS <indeksnama>
DIATAS MEJA <table_name>(nama_kolom ASC/DESC)

Indeks Mana yang Harus Anda Pilih?

Indeks berkerumun dan non-berkerumun meningkatkan waktu kueri. Jika sebagian besar kueri Anda adalah operasi SELECT pada beberapa kolom dalam tabel, indeks berkerumun lebih cepat. Namun, untuk operasi INSERT atau UPDATE, indeks non-cluster lebih cepat karena pengoptimal kueri dapat menemukan kolom langsung dari indeks.

Seperti yang Anda lihat, indeks ini berfungsi paling baik untuk kueri SQL yang berbeda. Oleh karena itu, sebagian besar database SQL akan mendapat manfaat dari memiliki setidaknya satu indeks berkerumun dan indeks non-berkerumun untuk kolom yang diperbarui secara berkala.

Pentingnya Indeks di SQL Server

Indeks yang dikelompokkan dan yang tidak dikelompokkan menghasilkan kinerja kueri yang lebih tinggi. Saat Anda menjalankan kueri, pengoptimal kueri memindai indeks untuk lokasi penyimpanan baris, lalu mengambil informasi dari lokasi tersebut. Ini jauh lebih cepat daripada memindai semua baris dalam tabel.

Anda juga dapat menggunakan indeks non-cluster untuk mengatasi kebuntuan pencarian bookmark dengan membuat indeks non-cluster untuk kolom yang diakses kueri.