2009-12-19 1 views

ответ

1

Недостаток, позволяющий столбцу обладать бизнес-логикой с нулевым воздействием - нуль означает, что нет никакого значения, но может быть. Если это неверно для ваших бизнес-правил, то столбец не должен допускать существование в нем нулевых значений.

Значения NULL в некоторых случаях известны как дорогостоящие для выполнения запроса, а некоторые базы данных не будут оценивать два столбца со значениями эквивалентного значения null.

BTW: Хотя вы можете установить ограничение DEFAULT, чтобы значение столбца было равно null, это больше, чем нужно. Есть три компонента определения столбца при создании или изменении таблицы:

  1. Имя столбца
  2. Тип данных для столбца
  3. необязательность - если столбец позволит нулевые значения существовать
+0

Установка значения по умолчанию NULL прекрасна. ЧТО НЕ ОДОБРЕН, ВЫПОЛНИТЬ ОТ ТАБЛИЦЫ, КОГДА КОЛОННА НЕТ ... это может быть очень медленным. –

0

Это хорошая практика, чтобы установить значение по умолчанию некоторого поля/столбца, NULL в MySQL?

Я думаю, да. Поскольку NULL берет минимальную память независимо от типа данных

+1

Я думаю, нет ;-) Экономия места обычно не имеет значения, но риск получить странные результаты, когда вы не знаете, как использовать нули, становится выше. – Brimstedt

3

Нет никаких недостатков, чтобы установить его как по умолчанию, поскольку это имеет значение только после того, как вы не установите для него значение.

Если значение становится NULL, оно может иметь последствия для поиска. Это связано с тем, что MySQL просматривает файлы, а пропуски полей с известной длиной легко, так как вы просто перескакиваете по этой длине. Но если столбец может содержать NULL, то это нужно проверить до того, как будет сделан переход. Не занимает слишком много времени, поэтому я не думаю, что это имеет большое значение.

Преимущество, очевидно, в экономии места, но хранение дешево. Это 2009 год.

Самый быстрый способ поиска - установить все столбцы NOT NULL и скорее использовать такие вещи, как пустые строки и -1 (или даже 0, если это не значит что-то еще) для хранения значений «null». Это не занимает больше места, и это всегда быстрее, потому что длина данных гарантирована.

Хотя, если ваша база данных относительно невелика и не нуждается в фильтрации 800 миллионов строк за 2 миллисекунды, тогда не стесняйтесь использовать значения NULL. ;)

+0

+1 .. хорошая аргументация – Xinus

0

В зависимости от вашей СУБД, значение NULL будет использоваться по умолчанию. То есть, NULL будет храниться всякий раз, когда вы не укажете значение, и по умолчанию не было установлено (и, конечно, NULL не запрещен).

Реальная стоимость NULLS возникает, когда значения должны интерпретироваться. Использование SQL использует странную и иногда противоречивую трехзначную логику при оценке выражений, в которых могут участвовать NULL. Третье значение НЕИЗВЕСТНО, и противоречивой частью является то, что NOT UNKNOWN равно UNKNOWN. Если вы не будете осторожны, вы можете получить неправильные результаты.

Статистика, подобная SUM (COLUMN), может быть занижена, если некоторые из записей имеют значение NULL в COLUMN, и эти записи имеют значение в реальном мире.

Но настоящий удар в голове исходит из тенденции разработчиков баз данных и программистов использовать NULL для передачи какой-то значимой информации, а не просто «NO DATA HERE». Это почти всегда вызывает логические ошибки. Если у вас есть данные, храните данные. Если у вас нет данных и нет выбора, сохраните NULL. И не позволяйте себе вводить в заблуждение отсутствие данных.

0

Простое исключение NOT NULL из определений столбцов иногда оказывает значительное влияние на производительность. Поэтому я привык включать его везде, где только возможно.

 Смежные вопросы

  • Нет связанных вопросов^_^