MySQL - Indeks Non-Clustered

Hai teman-teman, para ahli basisdata masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia Indeks Non-Clustered MySQL. Jangan khawatir jika Anda masih baru - saya akan menjadi panduan ramah Anda, dan kita akan mengexploreasi topik ini langkah demi langkah. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita masuk ke dalam!

MySQL - Non-Clustered Index

Apa Itu Indeks Non-Clustered?

Sebelum kita melompat ke detilnya, mari kita mulai dari dasar. Bayangkan Anda berada di perpustakaan (ingat perpustakaan itu?). Buku-buku diatur di rak dalam urutan abjad menurut nama belakang penulis. Hal ini mirip dengan cara data disimpan di tabel basisdata. Sekarang, apa bila Anda ingin menemukan semua buku dari genre tertentu? Anda harus mencari setiap buku satu per satu - itu sangat memakan waktu!

Ini adalah tempat indeks non-clustered memasuki gambar. Itu seperti membuat daftar terpisah yang mengatur buku menurut genre, dengan setiap entri menunjuk ke lokasi buku di rak. Dalam istilah basisdata, indeks non-clustered adalah struktur terpisah yang berisi salinan kolom yang dipilih dari tabel, bersama dengan pointer ke baris utuh di tabel utama.

Fitur Utama Indeks Non-Clustered:

  1. Mereka terpisah dari data tabel utama.
  2. Mereka dapat dibuat di satu atau lebih kolom.
  3. Banyak indeks non-clustered dapat ada di tabel tunggal.
  4. Mereka meningkatkan performa queri untuk kondisi pencarian tertentu.

Indeks Non-Clustered MySQL

Dalam MySQL, ketika Anda membuat indeks tanpa menentukan sebagai UNIQUE atau PRIMARY KEY, Anda membuat indeks non-clustered. Mari kita lihat bagaimana membuatnya:

CREATE INDEX idx_lastname ON customers (last_name);

Perintah ini membuat indeks non-clustered bernama idx_lastname di kolom last_name tabel customers. Sekarang, ketika Anda mencari pelanggan berdasarkan nama belakang, MySQL dapat menggunakan indeks ini untuk menemukan hasil lebih cepat.

Kapan Menggunakan Indeks Non-Clustered

Indeks non-clustered sangat cocok untuk:

  1. Kolom yang sering digunakan dalam klausa WHERE
  2. Kolom yang digunakan dalam kondisi JOIN
  3. Kolom yang digunakan dalam klausa ORDER BY atau GROUP BY

Namun, ingat aturan emas pengindeksan: "Dengan kekuatan yang besar datang tanggung jawab yang besar." Terlalu banyak indeks dapat memperlambat operasi INSERT, UPDATE, dan DELETE, karena setiap indeks perlu diperbarui bersama dengan tabel.

Membuat Indeks Non-Clustered Menggunakan NodeJS

Sekarang, mari kita merusak tangan dengan sedikit kode! Kita akan menggunakan Node.js untuk membuat indeks non-clustered di MySQL. Pertama-tama, pastikan Anda telah menginstal Node.js dan paket mysql2 di proyek Anda.

const mysql = require('mysql2/promise');

async function createNonClusteredIndex() {
try {
// Buat koneksi ke database
const connection = await mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});

console.log('Terhubung ke database MySQL');

// SQL untuk membuat indeks non-clustered
const sql = `CREATE INDEX idx_email ON users (email)`;

// Eksekusi SQL
const [result] = await connection.execute(sql);

console.log('Indeks non-clustered berhasil dibuat');

// Tutup koneksi
await connection.end();
} catch (error) {
console.error('Error:', error.message);
}
}

createNonClusteredIndex();

mari kitauraikan kode ini:

  1. Kita import modul mysql2/promise untuk menggunakan MySQL dengan async/await.
  2. Kita tentukan fungsi async createNonClusteredIndex().
  3. Dalam fungsi, kita buat koneksi ke basisdata MySQL kami.
  4. Kita tentukan pernyataan SQL untuk membuat indeks non-clustered di kolom email tabel users.
  5. Kita eksekusi SQL menggunakan connection.execute().
  6. Akhirnya, kita tutup koneksi.

Ketika Anda menjalankan skrip ini, ia akan membuat indeks non-clustered di kolom email tabel users. Indeks ini akan mempercepat queri yang mencari pengguna berdasarkan alamat email.

Contoh Praktis: Menggunakan Indeks Non-Clustered

Sekarang kita telah membuat indeks kita, mari kita lihat bagaimana ia meningkatkan performa queri. Pertimbangkan skenario ini:

async function findUserByEmail(email) {
const connection = await mysql.createConnection({
// detail koneksi...
});

const [rows] = await connection.execute(
'SELECT * FROM users WHERE email = ?',
[email]
);

await connection.end();

return rows[0];
}

Fungsi ini mencari pengguna berdasarkan email. Dengan indeks baru kita di kolom email, MySQL dapat secara cepat menemukan baris yang benar tanpa memeriksa seluruh tabel. Itu seperti memiliki petugas perpustakaan super efisien yang dapat segera menemukan setiap buku yang Anda minta!

Kesimpulan

Dan begitu, teman-teman! Kita telah melakukan perjalanan melalui dunia Indeks Non-Clustered MySQL, dari memahami apa itu hingga membuat dan menggunakannya dengan Node.js. Ingat, indeks adalah tools yang kuat, tapi gunakan mereka bijaksana. Terlalu banyak indeks dapat membuat basisdata Anda yang cepat menjadi lambat.

Sebagai Anda terus mengexploreasi basisdata, terus mencoba membuat indeks di kolom yang berbeda, mengukur performa queri sebelum dan sesudah, dan lihat keajaiban terjadi. Dan selalu ingat: dalam dunia basisdata, efisiensi adalah raja!

Sekarang, maju dan indeks secara bijaksana! Selamat coding!

Credits: Image by storyset