Index SQL Server

Salah satu elemen untuk mempercepat query pada SQL Server adalah menggunakan index pada tabel. Di SQL Server, terdapat 2 jenis index yang saya tahu :

  • Clustered
  • Non clustered

Setelah lumayan banyak googling, saya ingin mencoba menjelaskan perbedaan antara 2 index tersebut & untuk cara pembuatan index mungkin bisa googling sendiri J. Untuk jenis tabel menurut index :

  • Tabel heap : tabel yang tidak memiliki clustered index
  • Tabel clustered : tabel yang memiliki clustered index.

Clustered

Misalkan kita punya data dengan urutan :

Kolom 1 Kolom 2
A1 Des1
A3 Des3
A2 Des2
A4 Des4

Apabila kita menjadikan “kolom 1” sebagai index, maka ketika data tersebut disimpan menjadi sebagai berikut :

Kolom 1 Kolom 2
A1 Des1
A2 Des2
A3 Des3
A4 Des4

Jadi, bisa dilihat bentuk tabel yang disimpan sudah dalam bentuk teratur sesuai dengan data dari “kolom 1”.

Non clustered

Misalkan kita punya data dengan urutan :

Kolom 1 Kolom 2
A1 Des1
A3 Des3
A2 Des2
A4 Des4

Maka ketika kita membuat non clustered index, SQL Server akan membuat 1 acuan (acuan dalam bentuk apa saya kurang tahu, kemungkinan dalam bentuk tabel) dimana mungkin bentuknya seperti ini :

Kolom 1 Pointer (row locator)
A1 Pointer data “A1”
A2 Pointer data “A2”
A3 Pointer data “A3”
A4 Pointer data “A4”

Untuk isi pointer (row locator), untuk tabel heap akan berisi lokasi row dan untuk tabel clustered akan berisi index clustered nya. Intinya, SQL Server akan membuat 1 acuan sehingga pencarian data non clustered cukup melihat acuan tersebut tanpa harus melakukan iterasi row 1 per satu.

Dari semua yang saya tahu tentang index, akhir nya terjawab :

  • Kenapa index lebih cepat untuk proses SELECT, tetapi lebih lambat untuk proses INSERT, UPDATE & DELETE.
  • Kenapa 1 tabel hanya boleh memiliki 1 clustered index.

Semoga membantu.

Marifnst, 2013-07-04

Leave a Reply

Your email address will not be published. Required fields are marked *

Afiseaza emoticoanele Locco.Ro