Tabel pada sebuah database yang tidak menggunakan index (disebut heaps) menggunakan metode table-scan saat dilakukan pencarian data atau pengaksesan query SQL. Apa yang dimaksud dengan table-scan? Table scan dapat diumpamakan seperti mencari sebuah arti kata dalam pada sebuah buku yang tidak memiliki indeks huruf.

Jika kita ingin mengetahui arti kata ‘mobil’ di Kamus Besar Bahasa Indonesia (KBBI), apa yang kita lakukan? Pertama-tama, kita tentu akan membuka kamus berdasarkan index hurufnya bukan? Kita akan mencari huruf ‘m’, kemudian meneruskan pencarian hingga menemukan halaman yang mengandung kata ‘mo’, dan mengakhiri proses pencarian hingga kita menemukan kata mobil. Mudah bukan?

Nah, sekarang bayangkan jika Anda mencari arti kata tertentu pada sebuah buku yang tidak mempunyai indeks huruf. Anda mungkin akan mencari dari awal halaman hingga menemukan kata yang Anda cari. Nah, perumpamaan table-scan adalah seperti hal ini. Table-scan akan mencari data pada tabel database dari awal hingga menemukan data yang dicari.

Anda tentu akan heran saat ini. Lho, bukannya data pada tabel tersebut sudah terurut berdasarkan abjad berdasarkan kolom tabel tertentu? Nah, konsep ini sedikit salah. Anda mungkin saja melihat hasil pencarian data yang telah terurut, namun perlu diingat bahwa sistem penyimpanan data pada SQL Server adalah melalui pages. Setiap pages hanya terdiri dari 8Kb data Anda, dan 8 buah pages (64kb) tersebut akan disimpan pada sebuah extent. Walaupun data yang dimunculkan terlihat terurut, namun sebenarnya cara pencarian data tersebut tidak dilakukan dengan cara yang saya umpamakan tadi (index huruf pada KBBI), bahkan data yang tersimpan tidak terurut sama sekali!

Begini ilustrasi sederhananya : Saat Anda akan mencari data, maka pencarian data akan dimulai dari pages pertama hingga pages terakhir dari sebuah extent, jika tidak ditemukan maka akan dilanjutkan ke extent berikutnya. Nah, mengapa metode ini memiliki kelemahan? Hal ini dikarenakan saat kita memasukkan data pada tabel tertentu, data tidak secara otomatis disimpan secara terurut, namun disimpan pada pages yang masih bisa menyimpan data. Jadi saat Anda memasukkan data yang harusnya berada di urutan 2 pada tabel, data ini akan disimpan pada pages terakhir yang masih bisa menyimpan data. Hal inilah yang seringkali membuat proses pencarian data menjadi lebih lama pada database yang tidak memiliki index, terutama pada database dengan skala OLDB (Online Large Database) dan VLDB (Very Large Database).

Perlu diingat juga, bahwa saat Anda menerapkan index pada kolom-kolom tabel database, data Anda tidak akan terurut secara fisik. Hal ini berarti, data Anda tidak diurutkan secara terurut pada harddisk Anda. Data pada tabel database Anda akan terurut secara logical pada level pages dan extent. Clustered atau non-clustered key inilah yang membantu Anda saat melakukan pencarian data.

0 komentar:

Post a Comment