Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Jenis MySQL ENUM vs tabel gabungan

  • Mengubah kumpulan nilai dalam ENUM memerlukan ALTER TABLE yang mungkin menyebabkan restrukturisasi tabel -- operasi yang sangat mahal (restrukturisasi tabel tidak terjadi jika Anda hanya menambahkan satu nilai baru ke akhir definisi ENUM, tetapi jika Anda menghapusnya, atau mengubah urutannya, itu akan menjadi tabel restrukturisasi). Sedangkan Mengubah kumpulan nilai dalam tabel pencarian semudah INSERT atau DELETE.

  • Tidak ada cara untuk mengaitkan atribut lain dengan nilai dalam ENUM, seperti mana yang dihentikan, dan mana yang memenuhi syarat untuk dimasukkan ke dalam daftar tarik-turun di antarmuka pengguna Anda. Namun, tabel pencarian dapat menyertakan kolom tambahan untuk atribut tersebut.

  • Sangat sulit untuk menanyakan ENUM untuk mendapatkan daftar nilai yang berbeda, pada dasarnya mengharuskan Anda untuk menanyakan definisi tipe data dari INFORMATION_SCHEMA , dan mem-parsing daftar dari BLOB kembali. Anda dapat mencoba SELECT DISTINCT status dari tabel Anda, tetapi itu hanya mendapatkan nilai status yang sedang digunakan, yang mungkin tidak semua nilai dalam ENUM. Namun, jika Anda menyimpan nilai dalam tabel pencarian, akan mudah untuk melakukan kueri, pengurutan, dll.

Saya bukan penggemar berat ENUM, seperti yang Anda tahu. :-)

Hal yang sama berlaku untuk batasan CHECK yang hanya membandingkan kolom dengan kumpulan nilai yang tetap. Meskipun MySQL tidak mendukung batasan CHECK.

Pembaruan:MySQL 8.0.16 sekarang mengimplementasikan PERIKSA kendala .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATE_ADD() Contoh – MySQL

  2. Cara membuat kenaikan otomatis kunci utama tabel MySQL dengan beberapa awalan

  3. ASP.NET menggunakan SqlConnection menghubungkan MySQL

  4. Bagaimana cara mendapatkan perbedaan tahun dari dua tanggal yang berbeda?

  5. Kelompokkan berdasarkan bulan dan tahun di MySQL