Det afhænger af, hvilken lagermotor du bruger.
I MyISAM-format indeholder hver rækkeoverskrift et bitfelt med en bit for hver kolonne for at kode NULL-tilstand. En kolonne, der er NULL, fylder stadig, så NULL reducerer ikke lagerpladsen. Se https://dev.mysql.com/doc/internals/ da/myisam-introduction.html
I InnoDB har hver kolonne en "feltstartforskydning" i rækkeoverskriften, som er en eller to bytes pr. kolonne. Den høje bit i dette felts startforskydning er aktiveret, hvis kolonnen er NULL. I så fald behøver kolonnen slet ikke at blive gemt. Så hvis du har mange NULL'er, skulle din lagerplads være væsentligt reduceret. Se https://dev.mysql.com/doc/internals/en/innodb-field-contents.html
EDIT:
NULL-bittene er en del af rækkeoverskrifterne, du vælger ikke at tilføje dem.
Den eneste måde, jeg kan forestille mig, at NULL'er forbedrer ydeevnen på, er, at i InnoDB kan en side med data passe til flere rækker, hvis rækkerne indeholder NULL'er. Så dine InnoDB-buffere kan være mere effektive.
Men jeg ville blive meget overrasket, hvis dette giver en væsentlig præstationsfordel i praksis. Bekymring om effekten NULL'er har på ydeevnen er i området for mikrooptimering. Du bør fokusere din opmærksomhed andre steder, i områder, der giver større valuta for pengene. For eksempel tilføjelse af velvalgte indekser eller forøgelse af databasecacheallokering.