Nigdy nie miałem problemu z wydajnością na wielu kolumnach zerowych, nawet na bazach danych o wielkości setek gigów. Wyobrażam sobie, że możesz skończyć z problemami, jeśli uruchamiasz indeksy na tych polach, a następnie używasz null w zapytaniu, ale osobiście nie widziałem tego jako problemu. Z drugiej strony, nie stworzyłem tabel bazy danych, w których każde pole z wyjątkiem 3 miało wartość null.
Z drugiej strony widzę problem z architekturą, gdy większość danych ma wartość NULL. ogólnym powodem jest a) nieprawidłowo znormalizowana baza danych lub b) próba umożliwienia użytkownikom umieszczania danych w tabeli końcowej zamiast tworzenia osobnych tabel w celu „budowania” danych przed ich wprowadzeniem do bazy danych.
Od Ciebie zależy określenie najlepszej architektury Twojej bazy danych.