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