MySQL - Indeks Tidak Terkluster

Hai sana, para ahli basis data masa depan! Hari ini, kita akan melangkah ke dalam dunia menarik MySQL Indeks Tidak Terkluster. Jangan khawatir jika Anda baru - saya akan menjadi panduan ramah Anda, dan kita akan menjelajahi topik ini secara bertahap. Jadi, ambil secangkir kopi (atau teh, jika itu yang Anda sukai), dan mari kita masuk ke dalamnya!

MySQL - Non-Clustered Index

Apa Itu Indeks Tidak Terkluster?

Sebelum kita masuk ke detilnya, mari kita mulai dari dasar. Bayangkan Anda berada di perpustakaan (ingat itu?). Buku-buku diatur di rak dalam urutan abjad menurut nama belakang penulis. Hal ini mirip dengan cara data disimpan di tabel basis data. Tapi, apa kalau Anda ingin mencari semua buku dalam genre tertentu? Anda harus membaca setiap buku - itu sangat membosankan!

Ini adalah tempat indeks tidak terkluster memasuki gambar. Itu seperti membuat daftar terpisah yang mengatur buku menurut genre, dengan setiap entri mengarah ke lokasi buku di rak. Dalam istilah basis data, indeks tidak terkluster adalah struktur terpisah yang berisi salinan kolom yang dipilih dari tabel, bersama dengan penunjuk ke baris utuh di tabel utama.

Fitur Utama Indeks Tidak Terkluster:

  1. Mereka terpisah dari data tabel utama.
  2. Mereka dapat dibuat di satu atau lebih kolom.
  3. Banyak indeks tidak terkluster dapat ada di tabel tunggal.
  4. Mereka meningkatkan kinerja query untuk kondisi pencarian tertentu.

Indeks Tidak Terkluster MySQL

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

CREATE INDEX idx_lastname ON customers (last_name);

Perintah ini membuat indeks tidak terkluster bernama idx_lastname di kolom last_name tabel customers. Sekarang, ketika Anda mencari pelanggan menurut namanya, MySQL dapat menggunakan indeks ini untuk menemukan hasil lebih cepat.

Kapan Menggunakan Indeks Tidak Terkluster

Indeks tidak terkluster 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 harus diperbarui bersamaan dengan tabel.

Membuat Indeks Tidak Terkluster Menggunakan NodeJS

Sekarang, mari kita merusak tangan kita dengan beberapa kode! Kita akan menggunakan Node.js untuk membuat indeks tidak terkluster di MySQL. Pertama, pastikan Anda memiliki Node.js terpasang dan paket mysql2 ditambahkan ke proyek Anda.

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

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

console.log('Terhubung ke basis data MySQL');

// SQL untuk membuat indeks tidak terkluster
const sql = `CREATE INDEX idx_email ON users (email)`;

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

console.log('Indeks tidak terkluster berhasil dibuat');

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

createNonClusteredIndex();

mari kita rinci kode ini:

  1. Kita import modul mysql2/promise untuk menggunakan MySQL dengan async/await.
  2. Kita tentukan fungsi async createNonClusteredIndex().
  3. Dalam fungsi ini, kita buat koneksi ke basis data kita.
  4. Kita tentukan pernyataan SQL untuk membuat indeks tidak terkluster 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 tidak terkluster di kolom email tabel users. Indeks ini akan mempercepat query yang mencari pengguna berdasarkan alamat email.

Contoh Praktis: Menggunakan Indeks Tidak Terkluster

Sekarang kita telah membuat indeks kita, mari kita lihat bagaimana ia meningkatkan kinerja query. Pertimbangkan contoh ini:

async function findUserByEmail(email) {
const connection = await mysql.createConnection({
// rincian 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 yang sangat efisien yang dapat segera menemukan setiap buku yang Anda minta!

Kesimpulan

Dan di sana Anda ada, teman-teman! Kita telah berkeliling di tanah MySQL Indeks Tidak Terkluster, dari memahami apa itu mereka hingga membuat dan menggunakannya dengan Node.js. Ingat, indeks adalah tools yang kuat, tapi gunakan mereka bijaksana. Terlalu banyak indeks dapat membuat basis data Anda yang cepat menjadi lamban.

Sebagai Anda terus menjalankan petualangan basis data Anda, terus mencoba membuat indeks di kolom yang berbeda,ukur kinerja query sebelum dan sesudah, dan lihat keajaiban terjadi. Dan selalu ingat: dalam dunia basis data, efisiensi adalah raja!

Sekarang, maju dan index secara bijaksana! Selamat coding!

Credits: Image by storyset