Bagaimana Cara Menggunakan Indexes di MySQL?

Bagaimana Cara Menggunakan Indexes di MySQL?

Pada artikel ini, kami akan membahas mengenai cara menggunakan indexes di MySQL. Yuk, simak informasinya pada artikel di bawah ini, ya!

MySQL

MySQL adalah sebuah manajemen data atau Database Management System (DBMS) dengan menggunakan perintah Structured Query Language (SQL) dan juga bersifat open source. MySQL banyak digunakan untuk kebutuhan penyimpanan data, baik itu transaksi maupun data lainnya. 

Kemampuan database untuk menerima berbagai kondisi query, membuat database engine menantang untuk mengantisipasi query mana yang paling umum. Engine itu sendiri harus disiapkan untuk menemukan baris secara efisien dalam database table, terlepas dari ukurannya. Namun, seiring bertambahnya data, kinerja dari search dapat menurun. Semakin besar nya dataset, semakin sulit bagi database engine untuk menemukan dokumen yang cocok dengan query dengan cepat.

Database Administrator dapat menggunakan Indexes untuk membantu database engine dan meningkatkan performancenya.

Baca juga: Panduan Install AutoMySQLBackup di Cloud Server (VPS) Ubuntu

Persyaratan 

Terdapat beberapa persyaratan sebelum menggunakan Indexes.  

  • Memiliki VPS yang aktif dengan sudah terinstall MySQL.
  • Memiliki akses root.

Baca juga: Replikasi Master-Slave untuk Database MySQL/MariaDB di Dewacloud

Cara Menggunakan Indexes di MySQL

Berikut cara menggunakan Indexes di MySQL

Connect ke MySQL

Lakukan koneksi ke MySQL melalui SSH server dengan perintah di bawah ini.

$ ssh root@IP-Server

Kemudian, masuk ke MySQL menggunakan perintah berikut.

$ mysql -u root -p

Create Database indexes.

mysql > CREATE DATABASE indexes;

Output:

Query OK, 1 row affected (0.000 sec)

Select Database indexes.

MariaDB [(none)]> use indexes;

Output:

Database changed

MariaDB [indexes]> 

Setelah memilih daatbase, kamu bisa create contoh table di dalamnya. Pada artikel ini, kami menggunakan database siswa.

Tabel siswa akan berisi data yang disederhanakan tentang siswa di database. Berikut kolom-kolomnya:

  • id_siswa : kolom ini akan mengidentifikasikan siswa menggunakan tipe data int. Dan akan menjadi primary key.
  • first_name : kolom ini akan memuat nama depan setiap siswa, menggunakan tipe data varchar dengan maksimal 50 karakter.
  • last_name : kolom ini akan berisi nama belakang setiap siswa, menggunakan tipe data varchar dengan maksimal 50 karakter.
  • jenis_kelamin : kolom ini akan berisi jenis kelamin setiap siswa, menggunakan tipe data varchar dengan maksimal 30 karakter.
  • username : kolom ini akan berisi username siswa, menggunakan tipe data varchar dengan maksimal 30 karakter.

Create contoh table dengan perintah berikut.

mysql> CREATE TABLE siswa (

id_siswa int,

first_name varchar(50),

last_name varchar(50),

jenis_kelamin varchar(30),

username varchar(30)

);

Output:

Query OK, 0 rows affected (0.005 sec)

Input data nya menggunakan perintah INSERT INTO seperti berikut:

mysql> INSERT INTO siswa VALUES

(1, 'Ahmad', 'Juliano', 'Laki-laki', 'ahmadjuliano'),

(2, 'Bambang', 'Erdy', 'Laki-laki', 'bambangerdy'),

(3, 'Christian', 'Zainal', 'Laki-laki', 'christianzainal'),

(4, 'Damila', 'Subyanto', 'Perempuan', 'damilasubyanto'),

(5, 'David', 'Owi', 'Laki-laki', 'davidowi'),

(6, 'Malsyaf', 'Jatsuko', 'Laki-laki', 'malsyafjatsuko'),

(7, 'Kristofer', 'Mansyur', 'Laki-laki', 'kristofermansyur'),

(8, 'Kumala', 'Sariyanti', 'Perempuan', 'kumalasariyanti'),

(9, 'Juminten', 'Putri', 'Perempuan', 'jumintenputri'),

(10, 'Syarif', 'Arifin', 'Laki-laki', 'syarifarifin');

Output:

Query OK, 10 rows affected (0.002 sec)

Records: 10  Duplicates: 0  Warnings: 0

Single-Column Indexes

Single-column adalah jenis index yang paling umum dan langsng dapat kamu gunakan untuk mengoptimalkan query performance. Jenis index ini membantu database mempercepat queries yang memfilter dataset berdasarkan nilai dari single column. Indexes yang dibuat pada single column dapat mempercepat banyak conditional queries, termasuk pencocokan persis menggunakan = operator dan perbandingan operator dengan > atau <.

Dalam contoh database yang dibuat di langkah sebelumnya, tidak ada index. Sebelum membuat index, pertama-tama kamu akan menguji bagaimana database handle SELECT queries pada tabel siswa saat klausa WHERE digunakan untuk request hanya sebagian data dari table.

Asumsikan kamu ingin mencari siswa dengan username salah satu siswa, contoh ahmadjuliano. Jalankan query berikut.

mysql> SELECT * FROM siswa WHERE username = 'ahmadjuliano';

Klausa WHERE request siswa yang sama persis dengan username yang cocok dengan nilai yang diminta. Dalam contoh ini, database akan merespons sebagai berikut.

Output:

+----------+------------+-----------+---------------+--------------+

| id_siswa | first_name | last_name | jenis_kelamin | username     |

+----------+------------+-----------+---------------+--------------+

|        1 | Ahmad      | Juliano   | Laki-laki     | ahmadjuliano |

+----------+------------+-----------+---------------+--------------+

1 row in set (0.001 sec)

Menilai dari query output, kamu tidak akan mengetahui bagaimana database engine mendekati masalah dengan mencari baris yang cocok dengan table. Namun, MySQL menyediakan cara untuk mendapatkan insight tentang query plan, yaitu bagaimana engine mengeksekusi query: EXPLAIN statements.

Untuk mengakses query plan untuk query SELECT, eksekusi perintah berikut.

mysql> EXPLAIN SELECT * FROM siswa WHERE username = 'ahmadjuliano';

Perintah EXPLAIN memeritahu MYSQL untuk menjalankan SELECT query, tetapi alih-alih mengembalikan hasilnya, ia akan menampilkan informasi tentang bagaimana database engine melakukan query secara internal.

Berikut output dari perintah di atas.

+------+-------------+-------+------+---------------+------+---------+------+------+-------------+

| id   | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+------+-------------+-------+------+---------------+------+---------+------+------+-------------+

|    1 | SIMPLE      | siswa | ALL  | NULL          | NULL | NULL    | NULL | 10   | Using where |

+------+-------------+-------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.001 sec)

Dalam output di atas, kolom menjelaskan banyak aspek dari query exeuction. Bergantung pada versi MySQL kamu, keluaran outputnya mungkin berisi kolom tambahan, tetapi pada tutorial ini, berikut informasi pentingnya:

  • possible_keys : Mencantumkan index yang dipertimbangkan MySQL untuk digunakan. Dalam hal ini, tidak ada (NULL).
  • key : Menjelaskan index yang memutuskan untuk digunakan oleh MySQL saat melakukan query. Dalam hal ini, tidak ada index yang digunakan (NULL).
  • rows : Menampilkan jumlah dari rows yang harus dianalisa oleh MyQL satu-per-satu sebelum mengembalikan hasinya. Di sini, rowsnya 10, yang sesuai dengan jumlah semua kemungkinan baris dalam tabel.
  • extra : Menampilkan informasi tambahan dan deskriptif tentang query plan. Pada contoh ini, penggunaan WHERE berarti meminta database memfilter hasil langsung dari dalam tabel.

Kesimpulan

Dengan mengikuti artikel ini dari awal sampai akhir, artinya kamu sudah berhasil menggunakan Indexes di MySQL.

Demikian artikel ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu.