powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL vs NOT NULL
25 сообщений из 80, страница 3 из 4
NULL vs NOT NULL
    #39988875
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
ачало действия параметра однозначно определяет диапазон.


1 : 01.05.2020 - 04.05.2020
2 : 07.05.2020 - 11.05.2020
3 : 23.05.2020 - бессрочно
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988901
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наличие конца диапазона позволяет контролировать правильность данных. Хотя и усложняет процесс обновления данных.

По теме хочу напомнить varchar2 Oracle, ColumnName_IsNull SSIS и nullable типы C# - другими словами, никакой единой и общепризнанной схемы работы с пустыми значениями пока не существует.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988976
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
ачало действия параметра однозначно определяет диапазон.


1 : 01.05.2020 - 04.05.2020
2 : 07.05.2020 - 11.05.2020
3 : 23.05.2020 - бессрочно


1: 01.05.2020
null: 05.05.2020
2 : 07.05.2020
null: 12.05.2020
3 : 23.05.2020

Учитесь, шура.
Заодно полезность null осознаете.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988983
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Учитесь, шура.

Тому, как просрать на ровном месте ключ?

Или нажить себе еще проблем с предыдущими/следующими записями??

Давайте задачки:
1.Есть дата, как проверить в какой диапазон она попадает?
2.Есть две даты. Надо найти все ид, которые попадают в создаваемый ими отрезок времени.
3.Как узнать сроки действия 1,2 и 3.

Только без субд-специфичного изврата.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988984
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Учитесь, шура.

Тому, как просрать на ровном месте ключ?

Или нажить себе еще проблем с предыдущими/следующими записями??

Давайте задачки:
1.Есть дата, как проверить в какой диапазон она попадает?
2.Есть две даты. Надо найти все ид, которые попадают в создаваемый ими отрезок времени.
3.Как узнать сроки действия 1,2 и 3.

Только без субд-специфичного изврата.

Обучаю. Дорого.
Поэтому только 1
Код: sql
1.
outer apply ( select top(1) * from Table where [datetime] < @datetime order by [datetime] desc )
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988988
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Обучаю. Дорого.

То есть не умею.

Запросы тупейшие в случае когда есть дата начала, дата конца.

aleks222

Код: sql
1.
outer apply ( select top(1) * from Table where [datetime] < @datetime order by [datetime] desc )


crutchmaster
без субд-специфичного изврата.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988989
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Други! Здесь форум по MSSQL, поэтому со специфичным БД-извратом.
Будете устраивать холивары -- изгоню в "Сравнение СУДБ" или "Проектирование"

И да, ведите себя дружно.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988993
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Обучаю. Дорого.

То есть не умею.

Запросы тупейшие в случае когда есть дата начала, дата конца.

aleks222

Код: sql
1.
outer apply ( select top(1) * from Table where [datetime] < @datetime order by [datetime] desc )


crutchmaster
без субд-специфичного изврата.


1. Чем твой запрос лучше или быстрее этого?
2. Откуда мне знать что ты понимаешь под "без субд-специфичного изврата"? Тебя научить писать коррелированные запросы для MS SQL 2000?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988995
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Чем твой запрос лучше или быстрее этого?

Тем, что он не делает join там, где он не нужен?

aleks222
Откуда мне знать что ты понимаешь под "без субд-специфичного изврата"?

То есть максимально переносимый запрос на другие субд запрос.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39988999
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

Я не холивара ради, может оно правда лучше и сейчас aleks222 меня задавит аргументами. Просто речь про сам подход хранения интервалов и от особенностей разных субд хотелось бы абстрагироваться. Так-то я вообще могу вытащить выборку куда-нибудь и там танцевать с ней вприсядку.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989000
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Чем твой запрос лучше или быстрее этого?

Тем, что он не делает join там, где он не нужен?

aleks222
Откуда мне знать что ты понимаешь под "без субд-специфичного изврата"?

То есть максимально переносимый запрос на другие субд запрос.


Код: sql
1.
left outer join Table on [datetime] = ( select top(1) [datetime] from Table where [datetime] < @datetime order by [datetime] desc )
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989003
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Чем твой запрос лучше или быстрее этого?

Тем, что он не делает join там, где он не нужен?


Смешно.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989004
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Код: sql
1.
left outer join Table on [datetime] = ( select top(1) [datetime] from Table where [datetime] < @datetime order by [datetime] desc )



Ладно, теперь есть еще одно свойство и параметров больше одного.

entityId parId parValue dt1 dt255 1 1 01.01.2020 05.01.202055 1 2 07.01.2020 12.01.202055 2 1 01.01.2020 08.01.202055 2 2 10.01.2020 01.01.2021
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989006
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Код: sql
1.
left outer join Table on [datetime] = ( select top(1) [datetime] from Table where [datetime] < @datetime order by [datetime] desc )



Ладно, теперь есть еще одно свойство и параметров больше одного.

entityId parId parValue dt1 dt255 1 1 01.01.2020 05.01.202055 1 2 07.01.2020 12.01.202055 2 1 01.01.2020 08.01.202055 2 2 10.01.2020 01.01.2021


Это ничего не меняет.

ID entityId parId parValue dt1 dt21 55 1 1 01.01.2020 05.01.20202 55 1 2 07.01.2020 12.01.20203 55 2 1 01.01.2020 08.01.20204 55 2 2 10.01.2020 01.01.2021
и фсе.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989011
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Это ничего не меняет.

Ну я вижу, что ты ничего не поменял. И что? Фсё?

Надо выбрать все параметры, например у entityId 55 актуальные на дату. Как это будет выглядеть, когда dt1, dt2 нет? Два запроса?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989015
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster, aleks222,

Лично мое мнение:
ваш спор кажется не очень умным оффтопиком.
есть три способа хранения данных: за каждую дату, за начало периода и за период. У каждого способа есть свои достоинства и недостатки. Но ни один из способов не является принципиально лучшим или худшим.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989025
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
crutchmaster, aleks222,

Лично мое мнение:
ваш спор кажется не очень умным оффтопиком.
есть три способа хранения данных: за каждую дату, за начало периода и за период. У каждого способа есть свои достоинства и недостатки. Но ни один из способов не является принципиально лучшим или худшим.


Страдалец жаловался на необходимость проверки пересечения периодов.
Хранение только даты начала ликвидирует эту проблему.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989028
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
aleks222
Это ничего не меняет.

Ну я вижу, что ты ничего не поменял. И что? Фсё?

Надо выбрать все параметры, например у entityId 55 актуальные на дату. Как это будет выглядеть, когда dt1, dt2 нет? Два запроса?

Код: sql
1.
2.
3.
4.
5.
6.
select * 
  from Table as t 
  where  entityId = 55 
             and id = ( select top(1) id from Table as x where [datetime] < @datetime 
                                                                            and x.entityId = t.entityId
                                                                            and x.parId = t.parId order by [datetime] desc )
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989033
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Страдалец жаловался на необходимость проверки пересечения периодов.
Хранение только даты начала ликвидирует эту проблему.

Ликвидирует эту проблему посредством отказа от проверки (проверка данных по определению требует их избыточности).
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989034
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
aleks222
Страдалец жаловался на необходимость проверки пересечения периодов.
Хранение только даты начала ликвидирует эту проблему.

Ликвидирует эту проблему посредством отказа от проверки (проверка данных по определению требует их избыточности).

Хватит пороть чушь. Ей больно.

ЗЫ. Хочешь избыточности - введи дату два раза. И ошибись еще разок.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989087
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
ЗЫ. Хочешь избыточности - введи дату два раза. И ошибись еще разок.

Если исходные данные представлены в виде диапазонов, то преобразование в начальные даты скроет возможные ошибки исходных данных.

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

Кроме очистки данных, конечная дата может ускорять и облегчать читающие запросы, избавляя их от этапа сортировки.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989089
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.Евгений
aleks222
ЗЫ. Хочешь избыточности - введи дату два раза. И ошибись еще разок.

Если исходные данные представлены в виде диапазонов, то преобразование в начальные даты скроет возможные ошибки исходных данных.

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

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


Если бы у бабушки был х... - она была бы дедушкой.

Не стоит мешать в кучу проблемы ввода данных и хранение данных.

ЗЫ. Ну а сортировка... так индексы придумали давно. Зачем сортировать?
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989092
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема какая-то из пустого в порожнее.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989096
.Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Если бы у бабушки был х... - она была бы дедушкой.

Не стоит мешать в кучу проблемы ввода данных и хранение данных.

Чтобы разделять ввод и хранение данных, надо заниматься фронтендом. На уровне СУБД нет никакого отдельного ввода данных. Есть только введенные и хранящиеся данные разной чистоты.

aleks222
ЗЫ. Ну а сортировка... так индексы придумали давно. Зачем сортировать?

Я правильно понял ваши слова, что индекс по начальной дате должен полностью устранить потребность оптимизатора в сортировке по данному полю для любых запросов?

P.S. Индекс по начальной дате заведомо не поможет, если интересует продолжительность диапазона.
...
Рейтинг: 0 / 0
NULL vs NOT NULL
    #39989189
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Хранение только даты начала ликвидирует эту проблему.

И добавляет пачку других.
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 3 из 4
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL vs NOT NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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