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

Каковы недостатки для этого?

Ответы [ 5 ]

3 голосов
/ 19 декабря 2009

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

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

Преимущество - экономия места, но хранение дешевое. В конце концов, это 2009 год.

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

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

1 голос
/ 19 декабря 2009

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

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

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

  1. Имя столбца
  2. Тип данных для столбца
  3. Опциональность - если столбец допускает существование нулевых значений
0 голосов
/ 20 декабря 2009

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

0 голосов
/ 20 декабря 2009

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

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

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

Но настоящий удар в голову приходит из-за стремления разработчиков и программистов баз данных использовать NULL для передачи какой-либо значимой информации, а не просто «НЕТ ДАННЫХ ЗДЕСЬ». Это почти всегда вызывает логические ошибки. Если у вас есть данные, храните данные. Если у вас нет данных и нет выбора, сохраните NULL. И не позволяйте себе быть введенным в заблуждение отсутствием данных.

0 голосов
/ 19 декабря 2009

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

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

...