Tidak, menggunakan NULL tidak akan memakan lebih sedikit ruang daripada VARCHAR
yang kosong atau INT
bidang. Bahkan mungkin butuh lebih ruang angkasa. Inilah alasannya:
Sebuah VARCHAR
disimpan sebagai ukuran + nilai. Jumlah byte yang digunakan untuk ukuran tergantung pada penyimpanan maksimum VARCHAR
. VARCHAR(255)
membutuhkan satu byte, VARCHAR(65536)
membutuhkan dua byte dan seterusnya.
Sehingga VARCHAR(255)
kolom membutuhkan satu byte bahkan jika Anda menyimpan string kosong. Tabel berikut akan mengambil minimal satu byte per baris (ditambah beberapa kemungkinan overhead lainnya tergantung pada mesin penyimpanan).
CREATE TABLE sample (
a VARCHAR(255) NOT NULL
);
Untuk menyimpan NULL
nilai, MySQL menggunakan bitmask untuk setiap baris. Hingga 8 kolom nullable dapat disimpan per byte. Jadi jika Anda memiliki tabel seperti ini:
CREATE TABLE sample (
a VARCHAR(255) NULL
);
Akan membutuhkan minimal dua byte per baris. Menyimpan NULL
hanya mengatur sedikit, itu sudah dipesan apakah Anda menggunakannya atau tidak. Byte untuk VARCHAR
ukuran 's masih digunakan untuk setiap baris meskipun kolom disetel ke NULL
.