![]() |
|
Модераторы: LSD |
![]()
|
|
| SerGreY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 18.1.2004 Репутация: нет Всего: нет |
Читал, что при заполнении пустых строк значением NULL, ускоряется работа с базой?
Что думаете по этому поводу? Есть ли смысл писать NULL вместо пустой строки? |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Думаю, да. Не просто же так его придумали. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
||||
|
||||
| SerGreY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 18.1.2004 Репутация: нет Всего: нет |
Например, как поступить применительно к полю "Примечания", которое в большинстве случаев остается пустым? |
|||
|
||||
| Mephisto |
|
|||
![]() Волкъ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1818 Регистрация: 27.8.2003 Где: Питер Репутация: нет Всего: 34 |
Конечно в таком случае лучше Null. А если Null это код, то нужно пользоваться осторожно. А именно использовать только Outer join, а не inner! И не ограничивать посредством Where поля которые содержаться в прикрепляемой таблице. Иначе будут потери при выборке! |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Null нужно не для скорости, а для правильности данных. Пустая строка - это строка длиной в ноль, а Null - это полное отсутствие какой-то строки. Например имеется примечание для какого-то товара. Пустая строка в примечании будет озночать что примечания нет, а Null то что это примечание возможно есть возможно нет оно просто не внесено пользователем... Пример может корявый, но в любом случае использование пустых строк и Null - это отражение бизнес-логики, а не вопрос скорости
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
Если при создании поля таблицы указаь модификатор null - то к каждой записи будет добавлена метка размером в байт для этого поля
Если заполнить её - поле налл, если нет - читается значение поля. Советуют не использовать налл в DDL на всяк случай, а только по необходимости(зачем ещё место тратить? Но если искать по есть/нету, налл/не налл, пустая/ не пустая - то, безусловно, быстрее будет проверка на налл. Вместо сверки длиного стринга будет проходить разовая проверка одного байта -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 8 Всего: 77 |
ЗЫ: и конечно же
-------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
Использование null может в последствие плохо сказатся при построении отчетов.
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Почему? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
А как по твоему пользователь отреагирует на слово null в таблице екселевского отчета, например? А оно именно так и выведется, если поля предварительно не обрабатывать перед выводом, но это уже отдельные операции, занимающие определенное время и ресурсы компьютера, но и главное труда программиста на написание кода обработчика -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Ну так данные "сырьем" никто пользователю и не отдает обычно. Естественно, что им требуется обработка перед презентацией.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 3 Всего: 360 |
Есть целая статья насчёт трёзначной логики в БД.
Автор считает NULL - злом. Добавлено @ 15:57 Блин, статью найти не могу... Смысл там был в том, что отсутствие чего либо означает неправильное проектирование. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Теоретически верное проектирование не всегда хорошо согласуется с практикой. Например, пусть есть некий документ, у которого может быть срок действия, или он может быть без ограничения срока действия. С трехзначной логикой мы спокойно используем null, трактуя его как отсутсвие ограничения на срок действия. А как это реализовать без null значений? P.S. И кстати тогда получается, что и в языках программирования null не должно быть. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
Отдельная таблица со связью один-к-одному. Где есть записи - хорошо. Если записи нет - то получаем аналог null'a. Да и сам null можем получить при помощи LEFT JOIN... Вот только выносить ради этого поле "комментарий" в отдельную таблицу... Хм.... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Как раз это я и имел в виду когда говорил, что:
Это будет плохо, с точки зрения производитльности и с точки зрения потребляемой памяти, если хотябы процентов 30 записей будут иметь дату окончания срока действия. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
не знаю, касательно памяти... если у нас этот комментарий выгружается раз в год по хитро....умной комбинации клавиш и надо только для того, чтоб к двум записям добавить по строке комментария? То лучше, как мне думается, коль это не нужное, но и не лишнее будет лежат в отдельной таблице. Кроме того, мне интересно, как реализован FullText index - не будет ли "мешать" null значения полнотекстовому поиску? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
1. в моем примере была дата окончания, а не комментарий 2. я говорил про случай когда хотя бы процентов 30 записей имеею дату окончания Конечно если у нас есть здоровое поле, например фотография, и оно присутсвует не во всех записях, вполне уместно вынести его в отдельную таблицу. Накладные расходы в этом случае будут малы, по сравнению с самими данными.
Для null значений, в индексе не создается записей. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
а я обычно подаю "холодным" -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |