MySQL Tutorial Indeks – Buat, Tambah & Lepas

Apa itu Indeks?

Indeks masuk MySQL mengurutkan data secara berurutan dan terorganisir. Mereka dibuat pada kolom yang akan digunakan untuk memfilter data. Bayangkan indeks sebagai daftar yang diurutkan berdasarkan abjad. Lebih mudah mencari nama yang telah diurutkan berdasarkan abjad dibandingkan nama yang tidak diurutkan.

Menggunakan indeks pada tabel yang sering diperbarui dapat mengakibatkan kinerja buruk. hal ini dikarenakan MySQL membuat blok indeks baru setiap kali data ditambahkan atau diperbarui dalam tabel. Umumnya, indeks sebaiknya digunakan pada tabel yang datanya tidak sering berubah namun banyak digunakan dalam kueri penelusuran tertentu.

Apa gunanya Indeks?

Tidak ada yang menyukai sistem yang lambat. Kinerja sistem yang tinggi merupakan hal yang sangat penting di hampir semua sistem basis data. Sebagian besar bisnis berinvestasi besar-besaran pada perangkat keras sehingga pengambilan dan manipulasi data bisa lebih cepat. Namun investasi perangkat keras yang dapat dilakukan suatu bisnis terbatas. Mengoptimalkan database Anda adalah solusi yang lebih murah dan lebih baik.

MySQL Indeks

Lambatnya waktu respons biasanya disebabkan oleh catatan yang disimpan secara acak dalam tabel database. Kueri pencarian harus menelusuri seluruh catatan yang disimpan secara acak satu demi satu untuk menemukan data yang diinginkan. Hal ini mengakibatkan database berkinerja buruk saat mengambil data dari tabel besar. Oleh karena itu, Indeks digunakan untuk mengurutkan data agar lebih mudah dalam pencarian.

Sintaks: Buat Indeks

Indeks dapat didefinisikan dalam 2 cara

  1. Pada saat pembuatan tabel
  2. Setelah tabel dibuat

Contoh:

Untuk myflixdb kami, kami mengharapkan banyak pencarian ke database dengan nama lengkap.

Kami akan menambahkan kolom “nama_lengkap” ke Indeks di tabel baru “members_indexed”.

Skrip yang ditunjukkan di bawah ini membantu kami mencapai hal itu.

CREATE TABLE `members_indexed` (
  `membership_number` int(11) NOT NULL AUTO_INCREMENT,
  `full_names` varchar(150) DEFAULT NULL,
  `gender` varchar(6) DEFAULT NULL,
  `date_of_birth` date DEFAULT NULL,
  `physical_address` varchar(255) DEFAULT NULL,
  `postal_address` varchar(255) DEFAULT NULL,
  `contact_number` varchar(75) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`membership_number`),INDEX(full_names)
) ENGINE=InnoDB;

Jalankan skrip SQL di atas di MySQL meja kerja melawan "myflixdb".

MySQL Buat Indeks

Menyegarkan myflixdb menunjukkan tabel yang baru dibuat bernama member_indexed.

"Catatan" Tabel member_indexed memiliki “nama_lengkap” di node indeks.

Ketika basis anggota berkembang dan jumlah catatan meningkat, permintaan pencarian pada tabel member_indexed yang menggunakan klausa WHERE dan ORDER BY akan jauh lebih cepat dibandingkan dengan yang dilakukan pada tabel anggota tanpa indeks yang ditentukan.

Tambahkan sintaks dasar indeks

Contoh di atas membuat indeks saat mendefinisikan tabel database. Misalkan kita sudah memiliki tabel yang ditentukan dan permintaan pencarian di dalamnya sangat lambat. Mereka membutuhkan waktu terlalu lama untuk mengembalikan hasilnya. Setelah menyelidiki masalahnya, kami menemukan bahwa kami dapat meningkatkan kinerja sistem secara signifikan dengan membuat INDEX pada kolom yang paling umum digunakan dalam klausa WHERE.

Kita dapat menggunakan query berikut untuk menambahkan indeks

CREATE INDEX id_index ON table_name(column_name);

Misalkan saja kueri penelusuran pada tabel film sangat lambat dan kita ingin menggunakan indeks pada "judul film" untuk mempercepat kueri, kita dapat menggunakan skrip berikut untuk mencapainya.

CREATE INDEX `title_index` ON `movies`(`title`);

Mengeksekusi query di atas akan membuat indeks pada kolom judul di tabel film.

Artinya semua permintaan pencarian pada tabel film yang menggunakan “judul” akan lebih cepat.

Permintaan pencarian pada bidang lain dalam tabel film akan tetap lebih lambat dibandingkan dengan yang berdasarkan bidang yang diindeks.

Catatan: Anda dapat membuat indeks pada beberapa kolom jika diperlukan tergantung pada bidang yang ingin Anda gunakan untuk mesin pencari database Anda.

Jika Anda ingin melihat indeks yang ditetapkan pada tabel tertentu, Anda dapat menggunakan skrip berikut untuk melakukannya.

SHOW INDEXES FROM table_name;

Sekarang mari kita lihat semua indeks yang ditentukan pada tabel film di myflixdb.

SHOW INDEXES FROM `movies`;

Menjalankan skrip di atas dalam MySQL meja kerja terhadap myflixdb memberi kita hasil pada indeks yang dibuat.

Catatan: Kunci utama dan asing pada tabel telah diindeks MySQL. Setiap indeks memiliki nama uniknya sendiri dan kolom yang mendefinisikannya juga ditampilkan.

Sintaks: Jatuhkan indeks

Perintah drop digunakan untuk menghapus indeks yang sudah ditentukan pada tabel.

Mungkin ada saatnya Anda telah menentukan indeks pada tabel yang sering diperbarui. Anda mungkin ingin menghapus indeks pada tabel tersebut untuk meningkatkan kinerja kueri UPDATE dan INSERT. Sintaks dasar yang digunakan untuk menjatuhkan indeks pada tabel adalah sebagai berikut.

DROP INDEX `index_id` ON `table_name`;

Sekarang mari kita lihat contoh praktisnya.

DROP INDEX ` full_names` ON `members_indexed`;

Menjalankan perintah di atas akan menghilangkan indeks dengan id `full_names` dari tabel member_indexed.

Ringkasan

  • Indeks sangat berguna dalam meningkatkan kinerja MySQL permintaan pencarian.
  • Indeks dapat ditetapkan saat membuat tabel atau ditambahkan kemudian setelah tabel selesai dibuat.
  • Anda dapat menentukan indeks pada lebih dari satu kolom dalam satu tabel.
  • SHOW INDEX FROM table_name digunakan untuk menampilkan indeks yang ditentukan pada tabel.
  • Perintah DROP digunakan untuk menghapus indeks yang ditentukan pada tabel tertentu.