Вообще-то, с точки зрения архитектуры, правильно для отсутствующих значений использовать именно NULL - это значение для того и существует.
Насчет индексов - это зависит, во-первых, от того, какую RDBMS вы используете, а во-вторых, от того, содержит ли индекс другие колонки.
Так, например, в Oracle ключи состоящие из одних NULL в индекс не попадают, т.е., если, например, индекс строится по 2 колонкам: id и start_date, то в индекс этот ключ не попадет, только если обе эти колонки содержат NULL.
В то же время, в MS SQL Server значения NULL индексируются так же, как и остальные значения.