В MySQL лучше всегда разрешать нули, если вы не знаете, что поле является обязательным, или всегда использовать, Not Null
если вы не знаете, что поле будет содержать нули? Или это не имеет значения?
Я знаю, что в некоторых СУБД говорят, что они используют Not Null
как можно больше, потому что для разрешения значений NULL требуется дополнительный бит (или байт?) Для каждой записи для хранения статуса Null.
NULL
если и только еслиNULL
значение имеет интерпретацию для моделируемой вещи.Ответы:
В большинстве БД
NOT NULL
столбец будет более эффективным с точки зрения хранимых данных по причине, которую вы указали, а также более эффективным для запроса и индексации - поэтому, если вы не хотите разрешить пустые значения в столбце, вы должны явно запретить их.Это будет иметь незначительное влияние на производительность, поскольку дополнительные
NOT NULL
ограничения, возможно, потребуется проверять для каждой строки, на которую вы влияете, с помощью любого INSERT или UPDATE, но, поскольку большинство баз данных имеют относительную легкость записи и интенсивность чтения, это, вероятно, не является проблемой (мало дополнительное время вряд ли будет вообще заметно, поскольку это операция с привязкой к процессору, где остальная часть операции вставки / обновления будет привязана к вводу-выводу и, таким образом, гораздо более значительным узким местом), и это дает вам некоторое «бесплатное» "проверка данных, чтобы ваш код (или код других людей) не мог случайно поместить значения NULL там, где их не ожидает другой код, и поэтому может давать неверные результаты в их присутствии.Редактировать: Как отмечает Питер в своем комментарии, вышеизложенное является обобщением и может не выполняться для всех DMBS, хотя я почти уверен, что это верно для mysql и mssql. К другим сложностям в этой области могут относиться такие функции, как разреженные таблицы (как, например, реализовано в MSSQL 2008), которые изменят динамику производительности (не) пустых столбцов.
источник
Вы должны принять решение о разработке схемы и требованиях к приложениям. В большинстве случаев различия в производительности, вероятно, не заметны.
источник