Я согласен с мнением "не используйте магические ценности". Но я хотел бы отметить, что бывают случаи, когда законно прибегать к таким решениям.
За настройку столбцов необходимо заплатить цену: NULL не индексируются. Запрос типа «получить все записи, которые не были изменены с начала 2010 года», включает в себя те, которые никогда не были изменены. Если мы используем столбец со значением NULL, то мы вынуждены использовать [Modified] <@cutoffDate OR [Modified] <strong>IS NULL , и это, в свою очередь, заставляет ядро базы данных выполнять сканирование таблицы, поскольку нулевые значения не индексируется. И этот последний может быть проблемой.
На практике следует использовать NULL, если это не приводит к практическому снижению производительности. Но это может быть трудно узнать, если вы не знаете, каковы реальные объемы данных сегодня и будут в так называемом обозримом будущем. Вам также необходимо знать, будет ли значительная часть записей, имеющих специальное значение, - если это так, нет смысла индексировать их в любом случае.
Короче говоря, по умолчанию / правилу большого пальца следует перейти на NULL. Но если существует огромное количество записей, данные часто запрашиваются, и только небольшая часть записей имеет значение NULL / специальное, это может привести к значительному увеличению производительности для поиска записей на основе этой информации (при условии, что один создает index!) и ИМХО это может время от времени оправдывать использование «магических» значений.