SQL with Oracle, Indeks pada Tabel

Sebagaimana pebahasan pada view sebelumnnya, salah satu yang dapat mempermudah kita dalam pengambilan data berdasarkan query tertentu selain menggunakan view ialah memberikan indeks pada record dalam tabel. Selain pencarian, indeks juga berguna untuk melakukan pengurutan data.

Hal yang paling utama dalam mengakses data adalah kecepatan. Semakin cepat data diambil semakin cepat data diproses sehingga semakin cepat urusan diselesaikan. Untuk mempercepat pembacaan data dalam tabel maka sebaiknya dibuatkan sebuah indeks.

Indeks

Untuk pencarian data pada tabel dari sebuah basisdata setidaknya memiliki dua metoda pencarian. Metoda pertama, menggunakan Metoda Akses Bertahap/ Sequential Access Method yang mengharuskan SQL memeriksa satu persatu record berdasarkan primary key sebagai pembading data uniknya. Metoda pencarian ini tidak efisien, namun satu-satu cara default SQL dalam melakukan pencarian data/ record.

Cara kedua dengan menggunakan Metoda Akses Langsung/ Direct Access Method yang dimana diimplementasikan dengan memberikan indeks pada record dalam database. Melalui metoda ini SQL digunakan layaknya sturuktur pohon dalam penyimpanan dan mendapatkan kembali indeks dari sebuah data/record. Pointer pada sekolompok data disimpan diatas pohon, kelompok ini disebut juga dengan istilah nodes/ titik. Masing-masing titik berisi pointer ke titik lainnya.

Untuk membuat indeks pada sebuah tabel gunakan sintaks berikut:

CREATE INDEX namaindex ON namatabel(kolom_yang _mau_diindex1, kolom_yang_mau_diindex2, …);

Sedangkan untuk menghapus suatu indeks gunakan sintaks berikut:

DROP INDEX namaindex

Menyambung pembahasan VIEW kemarin, maka tidak ada salahnya dalam membuat contoh kita menggunakan data dari tabel perusahaan, rekening, dan akun_bank yang telah kita buat bersama sebelumnya.

Sebagai contoh, dibuat indeks untuk mempercepat pencarian data rekening terurut berdasarkan id_akun, maka berikan perintah:

CREATE INDEX rek_id_akun_idx ON rekening (id_akun);

SELECT * FROM rekening;

DROP INDEX rek_id_akun_idx;

Kadangkalanya pada suatu kolom/ atribut, suatu tabel memiliki dua atau lebih data yang sama, misal untuk tabel rekening dimana id_akun terdapat data yang duplikat. Untuk lebih mengefisienka ruang, maka pembuatan indeks pun dapat diset untuk unique. Sintaksnya sebagai berikut:

CREATE UNIQUE INDEX namaindex ON namatabel(kolom_yang _mau_diindex1, kolom_yang_mau_diindex2, …);

Contoh :

CREATE UNIQUE INDEX rek_idx_unique ON rekening(id_akun, id_perusahaan)

Untuk mendeletenya sama dengan mendelete indeks biasa diatas, yaitu:

DROP INDEX rek_idx_unique;

2 Responses

  1. trus field yg mo di buat sequence itu waktu d create table typenya pa boz?
    makasih

  2. […] Laporan Praktikum bab 6 indek 14/12/2011 bekticahyo22 Leave a comment Go to comments Judul INDEK A.    Tujuan :       1. Mahasiswa memahami dan menggunakan indeks dalam pengelolaan database.       2. Mahasiswa memahami cara penggunaan cluster, kolom unik dan trim. B.     Landasan Teori Indeks disini berguna dalam suatu pencarian nilai atau data dalam database. Dalam suatu kasus ketika mengakses sebuah tabel biasanya DBMS akan membaca seluruh tabel baris perbaris hingga selesai. Ketika baris sangat banyak dan hasil dari query hanya sedikit, maka hal ini sangat tidak efisien. Seperti halnya ketika kita membaca sebuah buku dan ingin mencari kata atau istilah tertentu dalam buku maka biasanya akan di cari dengan membuka setiap halaman dari awal sampai akhir. Dengan adanya indeks buku maka kita cukup dengan membuka indeks, sehingga akan cepat dalam pencarian kata tersebut. PostgreSQL tidak bisa mem buat indeks dengan otomatis, sehingga user dapat membuat indeks tersebut untuk seringkali digunakan kolom, biasanya dalam clause WHERE. Berikut struktur SQL : CREATE INDEX [nama index] ON [nama tabel] (nama kolom);           indeks sebaiknya jangan digunakan pada tabel yang sangat jarang atau tidak pernah diakses. Selain untuk perintah SELECT Indeks juga bermanfaat untuk UPDATE dan DELETE yang menggunakan kondisi pencarian. Sedangkan Unique index mirip dengan indeks tetapi lebih digunakan untuk mencegah duplikasi nilai yang terdapat dalam tabel. Jadi dengan adanya unique index berarti pembaca tidak dapat meng-insert nilai yang sama dalam sebuah tabel. Berikut struktur SQL nya : CREATE UNIQUE INDEX [nama index] ON [nama tabel] (nama kolom); KOLOM UNIK Unique berfungsi untuk menjaga agar tidak terjadinya duplikasi nilai (kesamaan data) dalam sebuah kolom, hal ini dapat ditangani dengan membuat sebuah indeks unik atau fungsi unik sendiri pada kolom yang dimaksud. Unique ini sering digunakan dalam pembuatan primary key, karena dalam primary key tidak boleh terdapat dua atau lebih data yang salam dalam satu kolom. Berikut Struktur SQL saat pembuatan tabel baru :             CREATE TABLE [nama tabel] ([nama kolom] [tipe data] [unique]);             Ketika tabel sudah ada kita bisa menggunakan cara seperti pada BAB. 2 berikut struktur SQL nya : ALTER TABLE [nama tabel] ADD UNIQUE ([nama kolom]); CLUSTER Perintah CLUSTER digunakan untuk melakukan perubahan pada tabel berdasarkan informasi pada Indeks, sehingga sebelum melakukan cluster terlebih dulu harus membuat indeks. Ketika sebuah tabel di cluster, maka secara fisik akan diurutkan kembali berdasarkan informasi dari indeks. Proses cluster hanya one-time operation artinya tidak bisa secara otomatis berulang seperti indeks, jadi meskipun terjadi perubahan maka tidak secara otomatis akan di cluster. Sebagai contoh misalnya kita ingin memindahkan kolom nama dari tabel mahasiswa ke sebuah tabel baru, kita tidak perlu terlebih dahulu membuat tabel baru tersebut karena perintah CLUSTER secara otomatis akan membuat tabel itu. Sehingga untuk memindahkan data yang berada dalam kolom tersebut cukup dengan menggunakan perintah SELECT, CLUSTER juga mendukung perintah ORDER BY dan WHERE untuk spesifikasinya, berikut struktur SQL yang digunakan : db_contoh=> CLUSTER [nama index] ON [nama tabel] ; CLUSTER db_contoh=> SELECT [nama kolom] INTO TABLE [nama tabel baru sebagai penyimpanan] db_contoh-> FROM [nama tabel] db_contoh-> ORDER BY [nama kolom untuk pengurutan] ; SELECT Check Check berfungsi untuk melakukan pembatasan nilai masukan dalam sebuah kolom, sebagai contoh misalkan kita ingin agar kolom gender yang terdiri dari satu karakter hanya memiliki dua pilihan karakter yaitu M (mail) atau F (Fimail) ini dapat kita seting dengan menggunakan CHECK. Dengan menggunakan CHECK maka sebuah kolom hanya bisa diisi dengan data yang memenuhi kriteria dalam CHECK. Berikut query contoh pengunaan check : db_contoh=> CREATE TABLE pelanggan ( db_contoh(> nama varchar(35), db_contoh(> kode_area CHAR(10) CHECK (length(trim(kode_area)) = 2), db_contoh(> umur INTEGER CHECK (umur >= 0), db_contoh(> gender CHAR(1) CHECK (gender IN (‘L’, ‘P’)), db_contoh(> ttl DATE CHECK (ttl BETWEEN ’1998-01-01′ AND CURRENT_DATE), db_contoh(> CHECK (upper(trim(nama)) != ‘nita’ OR db_contoh(> upper(trim(nama)) != ‘jeki’) db_contoh(> ); CREATE  Penggunaan TRIM             Suatu ketika pasti akan memiliki data yang di dalamnya terdapat spasi kosong yang tidak diperlukan, misalnya spasi ganda. Jika ada masalah seperti ini, kita dapat memberikan spasi-spasi kosong yang tidak diperlukan menggunakan fungsi TRIM, RTRIM, dan LTRIM. Ketiga fungsi ini memiliki bentuk penggunaan sebagai berikut : –          RTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kanan (Right) String. –          LTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri (Left) String. –          TRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri, kanan, maupun tengah String Berikut Struktur SQL nya : Select trim([nama kolom]) from [nama tabel]; Dalam penggunaannya, fungsi TRIM memiliki tiga opsi. Ketiga opsi ini dapat digunakan untuk menentukan karakter apa yang akan dihapus dari suatu String. Jadi, fungsi TRIM juga dapat menghilangkan karakter tertentu (bukan spasi kosong saja) dari suatu string. Opsinya sebagai berikut : –          LEADING : merupakan opsi untuk menghilangkan karakter terpilih yang ada di sebelah kiri. Parameter Leading diartikan sebagai sufik dari karakter yang ada. –          TRAILING : merupakan opsi untuk menghilangkan karakter terpilih yang ada di sebelah kanan String. Parameter Trailing diartikan sebagai sufik dari karakter yang ada. –         BOTH : merupakan opsi yang dapat menangani parameter Leading maupun Trailing. Berikut Struktur SQL nya : Select trim(LEADING ‘[karakter, misal : -]’ from [nama kolom]) from [nama tabel]; C.    Langkah Kerja 1.      Buka pgAdmin 2.      Buat database baru, dengan nama sembarang 3.      Buka SQL shell 4.      Kerjakan tugas yang ada di modul bab 6 tentang INDEK D.    Pembahasan Tugas Praktikum 1.      Buatlah index di tabel mahasiswa, fakultas, jurusan. Kemudian buat  lagi index yang bersifat unik disetiap tabel kemudian amati perbedaannya! 2.      Buat salah satu kolom di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya ! 3.      Pindahkan data dari tabel mahasiswa, fakultas, jurusan ambil kolom nim, nama mahasiswa, nomor telp, nama fakultas, nama jurusan ke tabel baru yang dinamai ‘tabel identitas’. 4.      Buatlah contoh penggunaan check pada sub bab pembahasan CHECK. Kemudian masukkan beberapa data baik yang sesuai dengan criteria check maupun yang bukan dan amati perbedaannya. 5.      Inputkan data di tabel mahasiswa dimana pada kolom nama sebelum inputkan karakter dahulukan dengan spasi dan di akhiri dengan spasi contoh : “ andi cahyono ”. kemudian munculkan seluruh data dan hilangkan spasi didepan maupun di belakang karakter! 6.      Munculkan data mahasiswa dengan hilangkan karakter “o” di akhir data dan karakter “a” di awal kata pada kolom nama! . E.     Kesimpulan Penggunaan index pada database merupakan salah satu teknik pembuatan database yang baik. Hal ini terutama sangat berguna pada implementasi database dengan skala VLDB (Very Large Database) atau OLDB (Online Large Database). Saat database dibuat tanpa menggunakan index, maka kinerja server database dapat menurun secara drastis. Hal ini dikarenakan resource komputer banyak digunakan untuk pencarian data atau pengaksesan query SQL dengan metode table-scan. Index pada kolom-kolom tabel database mempunyai fungsi seperti indeks kamus atau indeks buku. Hal ini membuat pencarian data akan lebih cepat dan tidak banyak menghabiskan resource komputer. Oleh karena itu, memiliki pemahaman akan konsep indexing, teknik implementasi, dan memahami kapan saat tepat untuk menerapkan metode ini merupakan hal yang berguna terutama bagi para enterprise application developer atau database administrator. Daftar Pustaka Modul Prakrikum DBD BAB VI INDEK https://developdottxt.wordpress.com/2008/04/28/sql-with-oracle-indeks-pada-tabel/ […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: