Tutorial Indeks MySQL - Buat, Tambah & Penurunan

Daftar Isi:

Anonim

Apa itu Indeks?

Indeks di MySQL mengurutkan data secara berurutan terorganisir. Mereka dibuat di kolom yang akan digunakan untuk memfilter data. Pikirkan indeks sebagai daftar yang diurutkan menurut abjad. Lebih mudah mencari nama yang telah diurutkan dalam urutan abjad daripada yang tidak diurutkan.

Menggunakan indeks pada tabel yang sering diperbarui dapat mengakibatkan kinerja yang buruk. Ini karena MySQL membuat blok indeks baru setiap kali data ditambahkan atau diperbarui dalam tabel. Umumnya, indeks harus digunakan pada tabel yang datanya tidak sering berubah tetapi banyak digunakan dalam kueri penelusuran tertentu.

Apa yang menggunakan Indeks?

Tidak ada yang menyukai sistem yang lambat. Performa sistem yang tinggi adalah yang terpenting di hampir semua sistem database. Sebagian besar bisnis berinvestasi besar pada perangkat keras sehingga pengambilan dan manipulasi data dapat lebih cepat. Tetapi ada batasan untuk investasi perangkat keras yang dapat dilakukan bisnis. Mengoptimalkan database Anda adalah solusi yang lebih murah dan lebih baik.

Kelambatan dalam waktu respons biasanya karena catatan disimpan secara acak dalam tabel database. Kueri pencarian harus mengulang seluruh rekaman yang disimpan secara acak satu demi satu untuk menemukan data yang diinginkan. Hal ini mengakibatkan database berkinerja buruk saat mengambil data dari tabel besar. Karenanya, Indeks digunakan untuk mengurutkan data agar lebih mudah dicari.

Sintaks: Buat Indeks

Indeks dapat didefinisikan dengan 2 cara

  1. Pada saat pembuatan meja
  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 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 meja kerja MySQL melawan "myflixdb".

Refresh myflixdb menampilkan tabel yang baru dibuat bernama members_indexed.

Tabel "Note" members_indexed memiliki "full_names" di node indeks.

Saat basis anggota meluas dan jumlah rekaman meningkat, kueri pencarian pada tabel members_indexed yang menggunakan klausa WHERE dan ORDER BY akan jauh lebih cepat dibandingkan dengan yang dilakukan 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 atasnya sangat lambat. Mereka membutuhkan waktu terlalu lama untuk mengembalikan hasilnya. Setelah menyelidiki masalah tersebut, kami menemukan bahwa kami dapat sangat meningkatkan kinerja sistem dengan membuat INDEX pada kolom yang paling umum digunakan di klausa WHERE.

Kita dapat menggunakan query berikut untuk menambahkan index

CREATE INDEX id_index ON table_name(column_name);

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

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

Mengeksekusi kueri di atas membuat indeks pada bidang judul di tabel film.

Artinya, semua kueri penelusuran di tabel film menggunakan "judul" akan lebih cepat.

Namun, kueri penelusuran di bidang lain dalam tabel film akan tetap lebih lambat dibandingkan dengan kueri yang didasarkan pada bidang yang diindeks.

Catatan: Anda bisa membuat indeks di beberapa kolom jika perlu bergantung pada bidang yang ingin Anda gunakan untuk mesin pencari database Anda.

Jika Anda ingin melihat indeks yang ditentukan 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 di meja kerja MySQL terhadap myflixdb memberi kita hasil pada indeks yang dibuat.

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

Sintaks: Jatuhkan indeks

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

Mungkin ada kalanya Anda telah menetapkan 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 meletakkan indeks di atas 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 menjatuhkan indeks dengan id `full_names` dari tabel members_indexed.

Ringkasan

  • Indeks sangat kuat dalam meningkatkan kinerja kueri pencarian MySQL.
  • Indeks dapat ditentukan saat membuat tabel atau ditambahkan nanti setelah tabel telah dibuat.
  • Anda dapat menentukan indeks di lebih dari satu kolom pada tabel.
  • Nama_tabel SHOW INDEX FROM digunakan untuk menampilkan indeks yang ditentukan pada tabel.
  • Perintah DROP digunakan untuk menghapus indeks yang ditentukan pada tabel tertentu.