work hard & thinking!

Mengenal Indeks (Indexing) pada MySQL

Indexing di MySQL adalah mekanisme untuk mempercepat pengambilan data dari tabel dengan membuat struktur data khusus yang memungkinkan query berjalan lebih efisien. Berikut adalah tipe-tipe indeks yang umum digunakan di MySQL:


1. PRIMARY KEY

  • Deskripsi: Indeks unik yang tidak boleh memiliki nilai duplikat atau NULL.
  • Penggunaan: Digunakan untuk mengidentifikasi setiap baris secara unik dalam tabel.
  • Karakteristik:
    • Setiap tabel hanya bisa memiliki satu primary key.
    • Secara otomatis diindeks oleh MySQL.
  • Contoh: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) );

2. UNIQUE INDEX

  • Deskripsi: Indeks yang memastikan bahwa nilai dalam kolom atau kombinasi kolom bersifat unik.
  • Penggunaan: Membatasi duplikasi data.
  • Karakteristik:
    • Memungkinkan nilai NULL (berbeda dari PRIMARY KEY).
    • Banyak UNIQUE INDEX dapat diterapkan pada tabel yang sama.
  • Contoh: CREATE TABLE products ( product_id INT AUTO_INCREMENT, sku VARCHAR(50) UNIQUE, PRIMARY KEY (product_id) );

3. INDEX (Normal Index)

  • Deskripsi: Indeks dasar yang hanya digunakan untuk mempercepat pencarian.
  • Penggunaan: Membantu query SELECT menjadi lebih cepat, tetapi tidak menjamin nilai unik.
  • Karakteristik:
    • Bisa diterapkan pada satu kolom atau beberapa kolom.
    • Tidak menghindari duplikasi nilai.
  • Contoh: CREATE INDEX idx_name ON employees(name);

4. FULLTEXT INDEX

  • Deskripsi: Digunakan untuk pencarian teks penuh (full-text search) pada kolom yang berisi teks panjang.
  • Penggunaan: Cocok untuk kolom seperti artikel, deskripsi, atau konten.
  • Karakteristik:
    • Hanya tersedia untuk tabel dengan tipe MyISAM, InnoDB (mulai MySQL 5.6), dan NDB Cluster.
    • Mendukung query seperti MATCH ... AGAINST.
  • Contoh: CREATE TABLE articles ( id INT AUTO_INCREMENT PRIMARY KEY, content TEXT, FULLTEXT (content) );

5. SPATIAL INDEX

  • Deskripsi: Digunakan untuk indeks data geometris (spasial).
  • Penggunaan: Cocok untuk aplikasi yang memerlukan data geografis, seperti peta.
  • Karakteristik:
    • Hanya tersedia pada tabel MyISAM dan InnoDB (MySQL 5.7+).
    • Digunakan dengan tipe data geometris seperti POINT, LINESTRING, atau POLYGON.
  • Contoh: CREATE TABLE locations ( id INT AUTO_INCREMENT PRIMARY KEY, coordinates GEOMETRY NOT NULL, SPATIAL INDEX (coordinates) );

6. COMPOSITE INDEX

  • Deskripsi: Indeks yang mencakup lebih dari satu kolom.
  • Penggunaan: Membantu mempercepat query yang memfilter atau mengurutkan berdasarkan beberapa kolom.
  • Karakteristik:
    • Urutan kolom dalam indeks memengaruhi efektivitasnya.
  • Contoh: CREATE INDEX idx_composite ON orders(customer_id, order_date);

7. FOREIGN KEY (Index Terkait Relasi)

  • Deskripsi: Membuat hubungan antara tabel dengan menerapkan constraint di kolom tertentu.
  • Penggunaan: Digunakan untuk memastikan referensi valid antara tabel utama dan tabel terkait.
  • Karakteristik:
    • Secara implisit menghasilkan indeks pada kolom foreign key.
  • Contoh: CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );

8. CLUSTERED INDEX (Terkait InnoDB)

  • Deskripsi: Secara internal, InnoDB menyimpan data tabel berdasarkan indeks PRIMARY KEY.
  • Penggunaan: Data tabel secara fisik diurutkan berdasarkan clustered index.
  • Karakteristik:
    • Tabel hanya dapat memiliki satu clustered index.
    • Jika tidak ada PRIMARY KEY, InnoDB akan membuat indeks unik secara otomatis.
  • Catatan: Tidak dapat didefinisikan secara eksplisit di MySQL.

9. NON-CLUSTERED INDEX

  • Deskripsi: Indeks tambahan yang digunakan untuk mempercepat pencarian tanpa memengaruhi penyimpanan fisik data.
  • Penggunaan: Memungkinkan pencarian data tanpa mengganggu pengurutan data utama.

Memilih Indeks yang Tepat:

  • PRIMARY KEY untuk identifikasi unik.
  • UNIQUE INDEX untuk memastikan tidak ada data duplikat.
  • FULLTEXT INDEX untuk pencarian teks kompleks.
  • SPATIAL INDEX untuk data geografis.
  • COMPOSITE INDEX untuk query yang melibatkan beberapa kolom.

Indeks mempercepat pencarian tetapi dapat memperlambat operasi seperti INSERT, UPDATE, dan DELETE. Gunakan dengan bijak sesuai kebutuhan!

Image by William from Pixabay

20 October 2024 | Tags: , , , ,
Bookmark and Share

Leave a Reply

Your email address will not be published. Required fields are marked *