Stop menggunakan tipe data ENUM di MYSQL

Oni Harnantyo
2 min readNov 22, 2022

--

mysql logo

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.

--

--

Oni Harnantyo
Oni Harnantyo

No responses yet