Stop menggunakan tipe data ENUM di MYSQL
ENUM merupakan salah satu tipe data di database Mysql yang berisi nilai-nilai string yang sudah ditentukan sebelumnya. Kolom enum hanya dapat berisi salah satu dari beberapa nilai string yang ditentukan.
Kita lihat contoh dibawah:
CREATE TABLE `users` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`country` enum('indonesia','malaysia') NOT NULL,
PRIMARY KEY (`id`)
)
Pada perintah sql tersebut, kita akan membuat tabel users
yang memiliki kolom country
. Kolom ini memiliki tipe data enum yang berisi nilai indonesia
dan malaysia
yang berarti nilai yang bisa dimasukkan adalah antara dua nilai tersebut.
Sebagai percobaan kita akan masukkan 10.000 data ke dalam table tersebut.
Sekarang bagaimana jika kita ingin menambahkan nilai baru di dalam enum. Kita akan menambahkan singapore
pada kolom country
dengan perintah:
ALTER TABLE users MODIFY COLUMN country enum('indonesia', 'malaysia', 'singapore') NOT NULL;
Hasil:
Oke, sekarang kita sudah sukses menambah nilai baru.
Setelah itu, karena suatu hal ternyata nilai singapore
ternyata tidak jadi dipakai sehingga perlu dihapus.
ALTER TABLE users MODIFY COLUMN country enum('indonesia', 'malaysia') NOT NULL;
Hasil:
Wow, bisa kita lihat updated rows
nilainya 10.000. Berarti ketika kita melakukan update nilai enum, mysql akan mengupdate semua data di dalam kolom. Jika data yang kita punya dalam tabel tersebut ada jutaan atau miliaran data, mysql memerlukan effort yang banyak untuk mengupdate semua kolom.
Sekian ulasan singkat dari saya, jika ada pengalaman atau insight lain terkait hal diatas silahkan tulis komentar dibawah.