Itu tergantung pada mesin penyimpanan yang Anda gunakan.
Dalam format MyISAM, setiap header baris berisi bitfield dengan satu bit untuk setiap kolom untuk mengkodekan status NULL. Kolom yang NULL masih memakan ruang, jadi NULL tidak mengurangi penyimpanan. Lihat https://dev.mysql.com/doc/internals/ en/myisam-introduction.html
Di InnoDB, setiap kolom memiliki "field start offset" di header baris, yaitu satu atau dua byte per kolom. Bit tinggi di bidang itu mulai offset aktif jika kolomnya NULL. Dalam hal ini, kolom tidak perlu disimpan sama sekali. Jadi, jika Anda memiliki banyak NULL, penyimpanan Anda akan berkurang secara signifikan. Lihat https://dev.mysql.com/doc/internals/en/innodb-field-contents.html
EDIT:
Bit NULL adalah bagian dari header baris, Anda tidak memilih untuk menambahkannya.
Satu-satunya cara saya bisa membayangkan NULL meningkatkan kinerja adalah bahwa di InnoDB, halaman data mungkin muat lebih banyak baris jika baris berisi NULL. Jadi buffer InnoDB Anda mungkin lebih efektif.
Tetapi saya akan sangat terkejut jika ini memberikan keuntungan kinerja yang signifikan dalam praktiknya. Khawatir tentang efek NULL terhadap kinerja adalah dalam bidang optimasi mikro. Anda harus memusatkan perhatian Anda di tempat lain, di area yang memberikan keuntungan lebih besar. Misalnya menambahkan indeks yang dipilih dengan baik atau meningkatkan alokasi cache database.