Apa itu yang dimaksud index di database - Yosahh selamat pagi sobs-sobs semoga kalian dalam keadaan sehat walafiat, sehingga bisa stalking mantan hahaha. oke pada kesempatan kali ini gua akan bahas tentang index menurut gua ya, jadi harap maklum jika penjelasan gua tidak mengena atau berbelit seperti ular yang kelilit, awal cerita dahulu kala pada saat gua baru belajar buat crud-crud'an gua sama sekali bingung ketika membuat table di Database karena ada kolom index, apa sih sebenarnya index ini gua sambil bergumam dalam hati, apa gunanya ? dimana rumahnya ? hehehe
Setelah nyemplung kesana kemari akhirnya gua mendapatkan pemahan untuk rasa gundah gulana ini.
1. Pengertian Index
Mungkin ada yang bertanya-tanya apa sih index, index adalah suatu mekanisme atau suatu fitur yang digunakan untuk mempercepat kita dalam melakukan pencarian data. bagaimana caranya, kok bisa mepercepat ??
Jadi begini sobs-sobs kalau boleh buat analogi sederhana si index ini seperti daftar isi dalam sebuah buku, dia menjadi penanda atau petunjuk yang digunakan jika ingin mencari informasi tertentu, bayangkan jika ada sebuah buku setebal 1000 halaman tanpa daftar isi, maka jika kita ingin membaca buku tersebut dan mencari informasi tertentu kita akan mengecek satu persatu halaman didalam buku yang berisi 1000 halaman itu, yang pasti itu akan menyulitkan dan juga akan memakan waktu. mending ngopi kalau begitu. Hehehe
Jadi dengan adanya index kita bisa langsung menuju ke halaman buku yang berisikan informasi kita butuhkan.
didalam database jika kita menset satu kolom sebagai index maka database akan menyimpan kolom tersebut sebagai daftar isi yang berurutan, ingat ya sobs-sobs secara berurutan. karena ini penting nanti bagaimana cara kita memahami mekanisme dari si index ini.
Oke sebagai contoh gua punya table dengan nama tbl_mahasiswa sobs-sobs yang sudah berisi data seperti dibawah ini.
nim
|
nama
|
jenis_kelamin
|
ttl
|
jurusan
|
023887
|
Budi Setiawan
|
laki-laki
|
Jakarta, 10 Agustus 1995
|
Teknik Mesin
|
023888
|
Kirana Larasati
|
perempuan
|
Jogjakarta, 20 April 1995
|
Akuntasi
|
023889
|
Dwi Lestari
|
perempuan
|
Semarang, 10 April 1995
|
Manajemen
|
023871
|
Angga Dimas
|
laki-laki
|
Klaten, 16 Mei 1995
|
Teknik Informatika
|
023872
|
Diana Laras
|
perempuan
|
Pekalongan, 28 Maret 1995
|
Sastra Jepang
|
Index
nim akan disusun seperti ini secara berurutan.
nim
|
023871
|
023872
|
023887
|
023888
|
023889
|
Kolom nim adalah kolom index artinya bisa kita sebut sebagai daftar isi, sedangkan kolom yang lainnya tidak. untuk setiap baris kita anggap sebagai sebuah halaman, halaman dimulai dari bawah artinya dari contoh diatas kita mempunyai 5 halaman. sekarang gua ingin mencari data dengan data dengan nim 023889
SELECT * FROM tbl_mahasiswa WHERE nim='023889'
dengan menjalankan query diatas dapat diartikan kita kita membuka daftar isi dan mencari kolom nim yang sama dengan 023889 dan kita langsung menuju halaman yang tertera di daftar isi tanpa kita membuka satu per satu halaman untuk mengecek.
Pertanyaan yang timbul lalu bagaimana bang jika kita mengganti kolom pencarian menjadi nama seperti dibawah ini :
SELECT * FROM tbl_mahasiswa WHERE nama='Dwi Lestari'
jika kita mencari pencarian seperti diatas maka database tidak akan mengecek index, kenapa ? karena kolom yang kita definisikan sebagai index adalah kolom nim bukan kolom nama, artinya database akan mengecek satu persatu baris.
Oleh karena itu kita harus pintar dalam menentukan kolom manakah yang kita gunakan sebagai index, dan kira-kira kolom manakah yang kita gunakan untuk fitur pencarian.
Pertanyaan selanjutnya apakah kita bisa mendefinisikan lebih dari satu kolom sebagai index ???
Ya tentu saja bisa sobs-sobs tapi dengan catatan jika kita mendefiniskan banyak kolom sebagai index, maka akan memperlambat proses insert, update, dan delete. lah kenapa bisa gitu bang ??
Ya karena index harus didefinisikan ulang , artinya daftar isi harus ditulis ulang. jika data sedikit kita mendefinisikan beberapa kolom sebagai index performanya masih bagus, namun jika data kita banya maka pemilihan kolom sebagai index harus diperhatikan kembali.
2. Cara pembuatan index
untuk membuat index pada suatu kolom ada beberapa cara yang bisa kita gunakan, dibawah ini merupakan beberapa cara yang bisa digunakan.
2.1 Create index
Cara pembuatan index ini dilakukan pada saat kita sudah membuat tabel, ada pun format penulisannya adalah sebagai berikut :
CREATE tipe_index INDEX nama_index ON nama_tabel ON (nama_kolom)
untuk tipe_index bisa diskip dulu sobs-sobs karena akan dibahas selanjutnya, oke kita akan ambil contoh dengan tbl_mahasiswa dan kita akan jadikan kolom nim sebagai index:
kita akan buat terlebih dahulu tbl_mahasiswa nya.
CREATE TABLE tbl_mahasiswa (
nim VARCHAR(6),
nama VARCHAR(100),
jenis_kelamin ENUM('laki-laki', 'perempuan'),
ttl VARCHAR(100),
jurusan VARCHAR(100)
);
Jika sudah. maka selanjutnya kita buat index untuk kolon nim :
CREATE INDEX nim ON tbl_mahasiswa (nim);
Bisa dilihat sobs-sobs disini gua menambahkan kolom index dengan penulisan seperti diatas, untuk tipe_index nya boleh tidak ditulis, untuk mengetahui apakah kita berhasil menambahkan index kita jalankan query dibawah ini :
SHOW INDEX FROM tbl_mahasiswa;
Jika query diatas berhasil maka akan tampil list index di
tbl_mahasiswa seperti dibawah ini :
Perhatikan pada Key_Name dan Column_Name, key namenya adalah nama key yang kita definiskan sobs-sobs, kebetulan key namenya dari query diatas kita buat sama dengan nama kolom nim nya.
Kita juga bisa membuat index untuk beberapa kolom sekaligus, sekarang gua drop tabel tbl_mahasiswa nya kemudian gua buat lagi tabelnya.
untuk query penambahan index multi kolom akan seperti dibawah ini sobs :
CREATE INDEX idx_nim_nama ON tbl_mahasiswa (nim, nama);
perhatikan
idx_nim_nama akan menjadi penamaan index kita pada dua kolom, kolom nim dan kolom nama. untuk cek kembali silahkan jalankan show index kembali seperti diatas, jika berhasil maka akan muncul seperti dibawah ini :
sekarang kita beralih ke cara berikutnya dalam membuat index.
2.2 Alter table
Sama seperti cara pertama, cara kedua ini kita baru bisa membuat index setelah membuat tabel. untuk format penulisannya sendiri adalah sebagai berikut.
ALTER TABLE nama_table ADD INDEX nama_index (kolom_index)
Sebagai contohnya kita hapus kembali tbl_mahasiswa lalu buat kembali, jika sudah kita tambahkan query seperti dibawah ini :
ALTER TABLE tbl_mahasiswa ADD INDEX nim (nim);
Jika sudah periksa kembali dengan perintah show index.
dan sedikit pembeda dengan kita menambahkan dengan keyword create index, di keyword alter table kita boleh tidak menuliskan nama index-nya sobs. silahkan sobs-sobs coba sendiri.
2.3 Create Table
cara ini yang mungkin banyak digunakan sobs-sobs, yaitu kita menambahkan index pada saat kita mendefinisikan atau membuat tabel. adapun contohnya sebagai berikut :
CREATE TABLE tbl_mahasiswa (
nim VARCHAR(6),
nama VARCHAR(100),
jenis_kelamin ENUM('laki-laki', 'perempuan'),
ttl VARCHAR(100),
jurusan VARCHAR(100),
INDEX nim (nim)
);
perhatikan baris terkahir sobs-sobs kita menambahkannya dengan format :
INDEX nama_index (kolom_index)
Silahkan sobs-sobs bereksperimen, silahkan coba apakah bisa membuat index multi kolom di CREATE TABLE.
3. Cara menghapus index
untuk menghapus index dari suatu tabel kita menggunakan query dengan format dibawah ini sobs :
DROP INDEX nama_index ON nama_tabel
Oke untuk contohnya querynya seperti berikut :
DROP INDEX nim ON tbl_mahasiswa;
Silahkan sobs-sobs cek kembali dengan perintah show index.
4. Jenis-jenis index
Ya sobs-sobs berikut ini adalah jenis-jenis index yang umum banyak digunakan :
4.1 Primary Index
Ya mungkin ini adalah yang paling umum, index ini adalah index utama dan hanya boleh ada satu dalam suatu tabel jika kita membuatkannya pada suatu tabel, index ini akan dibuat jika ada keyword PRIMARY KEY pada saat kita membuat tabel. contoh :
CREATE TABLE tbl_mahasiswa (
nim VARCHAR(6) PRIMARY KEY,
nama VARCHAR(100),
jenis_kelamin ENUM('laki-laki', 'perempuan'),
ttl VARCHAR(100),
jurusan VARCHAR(100)
);
dan value dari index ini harus bersifat unik artinya tidak boleh ada value yang sama dikolom yang kita sudah definisikan sebagai Primary Index.
4.2 Unique Index
Sama seperti primary index, jika kolom di set sebagai Unique Index maka value dari kolomnya wajib unik, tidak boleh ada duplikasi data. yang membedakan dengan primary index adalah kita bisa membuat unique index untuk beberapa kolom atau lebih dari satu kolom. Oh iya untuk membuat index ini yang diperlukan adalah keyword UNIQUE / UNIQUE INDEX. sekarang kita akan buat contoh dengan tbl_mahasiswa kembali:
CREATE TABLE tbl_mahasiswa (
nim VARCHAR(6) UNIQUE,
nama VARCHAR(100) UNIQUE,
jenis_kelamin ENUM('laki-laki', 'perempuan'),
ttl VARCHAR(100),
jurusan VARCHAR(100)
);
dari contoh diatas kita menambahkan Unique Index untuk kolom nim dan nama.
4.3 Fulltext Index
Index ini lebih diperuntukan untuk value kolom yang mempunyai banyak kata atau kalimat, contoh implementasinya adalah untuk mencari deskripsi produk, isi postingan website, komentar, atau lainnya.
untuk mendefinisikannya kita dengan keyword FULLTEXT INDEX. contohnya seperti dibawah ini :
CREATE TABLE tbl_post_blog (
id INT PRIMARY KEY,
judul VARCHAR(100),
postingan TEXT,
FULLTEXT INDEX (postingan)
);
dari query diatas kolom postingan akan kita set sebagai FULLTEXT INDEX.
Sebenarnya masih ada beberapa jenis index, disini yang gua mention hanya yang sering dipakai atau yang umum dijumpai, jika sobs-sobs ingin tau lebih banyak silahkan sobs-sobs buka dokumentasi resmi mysql atau mariadb.
Oke mungkin sekian dahulu pembahasannya sobs-sobs, jika ada yang kurang jelas silahkan bertanya dikolom komentar, atau sobs-sobs bisa mencari refrensi ditempat lain.
Sekian dan terimakasih sobs-sobs.
See you next time.
Posting Komentar untuk "Apa itu yang dimaksud Index di Database MySQL"
Posting Komentar