Di MySQL, apakah lebih baik selalu mengizinkan nol kecuali Anda tahu bidang wajib diisi, atau selalu gunakan Not Null
kecuali Anda tahu bidang akan berisi nol? Atau tidak masalah?
Saya tahu dalam beberapa DBMS mereka mengatakan untuk menggunakan Not Null
sebanyak mungkin karena mengizinkan nol membutuhkan sedikit tambahan (atau byte?) Per catatan untuk menyimpan status Null.
NULL
jika dan hanya jikaNULL
nilainya memiliki interpretasi untuk hal yang Anda modelkan.Jawaban:
Di sebagian besar DB,
NOT NULL
kolom akan lebih efisien dalam hal data yang disimpan karena alasan Anda menyatakan, dan juga lebih efisien untuk kueri dan indeks - jadi kecuali jika Anda ingin mengizinkan NULL dalam kolom, Anda harus melarangnya secara eksplisit.Akan ada sedikit implikasi kinerja, karena
NOT NULL
kendala tambahan akan berpotensi perlu diperiksa untuk setiap baris yang Anda pengaruhi dengan INSERT atau UPDATE apa pun, tetapi karena sebagian besar basis data relatif ringan dan ringan, ini mungkin bukan masalah (kecil bagaimanapun juga, waktu tambahan tidak akan terlihat sama sekali karena ini adalah operasi yang terikat CPU di mana sisa operasi insert / update akan terikat IO dan jadi jauh lebih penting dibandingkan dengan botol-neck) dan itu memberi Anda beberapa "gratis "pengecekan data sehingga kode Anda (atau kode orang lain) tidak dapat secara tidak sengaja meletakkan NULL di mana kode lain tidak mengharapkannya dan karenanya dapat memberikan hasil yang salah di hadapan mereka.Sunting: Seperti yang ditunjukkan Peter dalam komentarnya di atas adalah generalisme dan mungkin tidak berlaku untuk semua DMBS, meskipun saya cukup yakin itu berlaku untuk mysql dan mssql. Komplikasi lain di area ini mungkin termasuk fitur seperti tabel jarang (seperti yang diterapkan MSSQL 2008 misalnya) yang akan mengubah dinamika kinerja kolom (tidak) yang dapat dibatalkan.
sumber
Anda harus membiarkan desain skema dan persyaratan aplikasi memandu keputusan ini. Perbedaan kinerja mungkin tidak terlihat pada kebanyakan kasus.
sumber