Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / затраты на not null / 10 сообщений из 10, страница 1 из 1
01.11.2015, 12:21:43
    #39092030
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
У нас исторически так сложилось, что все поля всегда объявляются как not null
А может ли мне кто-нибудь на пальцах объяснить теряем ли мы что-нибудь от неиспользования null полей
Может есть какое-то скрытое преимущество в использовании полей, которые объявлены без not null? Может они не участвуют в переборах и поэтому сильно быстрее работают??
...
Рейтинг: 0 / 0
01.11.2015, 12:50:12
    #39092041
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
Странный вопрос. Статус поля NULL/NOT NULL должен определяться семантикой данных в этом поле.

Ряд различий, конечно же, есть.
Например, для NULL-полей в записи дополнительно хранятся биты, указывающие, что в конкретном поле хранится NULL. Насколько я помню, эти биты плотно пакуются в байты. Т.е. для восьми полей понадобится один байт, для девяти - уже два.
Другой пример - COUNT(fieldname) может быть (а может и не быть) оптимизирован в COUNT(*), если поле NOT NULL. И, очевидно, не может, если поле NULL. Впрочем, я не в курсе, реализована ли конкретно в MySQL такая оптимизация.
Но это все мелочи, и вряд ли может быть причиной выбора статуса поля.
...
Рейтинг: 0 / 0
01.11.2015, 12:52:07
    #39092043
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
LumixУ нас исторически так сложилось, что все поля всегда объявляются как not nullВ каком-то смысле это вам повезло. В некоторых других СУБД пустые строки являются NULL и, соответственно, строковые поля нельзя огульно назначать NOT NULL.
...
Рейтинг: 0 / 0
01.11.2015, 15:59:45
    #39092119
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
miksoftВ некотор ых друг их СУБД пустые строки являются NULLэто в каких же? ну, кроме той, о которой и так все слышали )
...
Рейтинг: 0 / 0
01.11.2015, 19:13:17
    #39092205
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
Если честно, то я пока не могу придумать хотя бы гипотетически реальный пример, где бы был смысл юзать null поля. Из всей моей практики я встречал только один случай реального осмысленного использования null - и это используется не в таблицах, а в левых джоинах, чтобы инвертировать подмножество относительно заданного условия.

А вот когда был бы смысл задавать null на уровне поля таблицы.... я умом понимаю, что null - это как бы смысл такой, что переменная не задана, то есть типа undefined, not set, но на практике все это выеденного яйца не стоит...
...
Рейтинг: 0 / 0
01.11.2015, 19:55:20
    #39092236
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
Lumixне могу придумать хотя бы гипотетически реальный пример, где бы был смысл юзать null поляНу у тебя просто фантазия неразвита....
Например, учёт... ну, скажем, компьютеров. Поле Whom содержит ID сотрудника, которому системник поставлен, или ID сотрудника, который его в данный момент починяет/чистит/протчая. Если в поле Null - системник валяется на складе и ждёт нового "хозяина"...
...
Рейтинг: 0 / 0
01.11.2015, 19:57:23
    #39092238
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
Lumixя умом понимаю, что null - это как бы смысл такой, что переменная не задана, то есть типа undefined, not setОшибочное мнение. Null эквивалентно "хрен знает". То есть значение есть, но оно неизвестно, и нет способа его узнать.
...
Рейтинг: 0 / 0
01.11.2015, 20:22:26
    #39092248
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
Lumix,

пример = родительская - дочерняя таблица
не удаляем по CASCADE, выставляем в NULL, запись становится "ничья"

http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html SET NULL: Delete or update the row from the parent table, and set the foreign key column or columns in the child table to NULL. Both ON DELETE SET NULL and ON UPDATE SET NULL clauses are supported.
If you specify a SET NULL action, make sure that you have not declared the columns in the child table as NOT NULL.
...
Рейтинг: 0 / 0
01.11.2015, 21:08:45
    #39092265
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
Alex_Ustinov, ну, это... короче, мы форины тоже не юзаем.
...
Рейтинг: 0 / 0
02.11.2015, 01:27:57
    #39092307
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
затраты на not null
tanglirmiksoftВ некотор ых друг их СУБД пустые строки являются NULLэто в каких же? ну, кроме той, о которой и так все слышали )Это не множественное число, это неопределенное число. Просто в русском языке нет такой конструкции.
Но, да, достоверно я знаю только про одну такую СУБД. :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / затраты на not null / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]