Я ценю семантическое значение значения NULL в таблице базы данных, отличающегося как от false, так и от пустой строки ''. Тем не менее, я часто читал о проблемах производительности, когда поля обнуляются, и мне посоветовали использовать пустую строку в случаях, когда NULL на самом деле семантически правильно.
Какие обстоятельства подходят для использования пустых полей и значений NULL? Каковы компромиссы? Разумно ли вообще избегать использования значений NULL и просто использовать пустые строки, false или 0, чтобы указать на отсутствие значения?
UPDATE
ОК. Я понимаю семантическое различие между '' и NULL, а также (не зависящие от производительности) обстоятельства, при которых NULL является подходящим значением поля. Тем не менее, позвольте мне подробнее остановиться на проблеме производительности. Это из превосходного "Высокопроизводительного MySQL" Шварца, Зейцева и др.
http://www.borders.co.uk/book/high-performance-mysql-optimization-backups-replication-and-more/857673/:
MySQL труднее оптимизировать
запросы, которые относятся к обнуляемым кумнам,
потому что они делают индексы, индекс
статистика и сравнение ценностей больше
сложно. Обнуляемый столбец использует
больше места для хранения и требует
специальная обработка внутри MySQL. когда
обнуляемый столбец индексируется, это
требуется дополнительный байт на запись и
может даже вызвать фиксированный размер
(например, указатель на одно целое число
столбец) для преобразования в
переменный размер в MyISAM.
Больше здесь:
Просмотр книг Google
Вполне возможно, что окончательный ответ - я просто искал второе мнение и опыт с фронта.