Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Требуется ли проверка на null при сравнениях? / 9 сообщений из 9, страница 1 из 1
25.06.2018, 12:25
    #39665247
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
В работающей системе в SQL-запросе есть такое условие:
Код: plsql
1.
AND reckoning_date IS NOT NULL AND reckoning_date <= NOW()


Насколько я помню, любое сравнение с null всегда будет давать false, то есть если в поле будет null, то сравнение с текущей датой все равно даст отрицательный результат.
По какой причине в запросе указано reckoning_date IS NOT NULL ? Какие-то подсказки оптимизатору или просто перестраховались?
...
Рейтинг: 0 / 0
25.06.2018, 12:30
    #39665255
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
Alibek B.любое сравнение с null всегда будет давать false null
...
Рейтинг: 0 / 0
25.06.2018, 12:31
    #39665257
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
NULL значения не хранятся в b_tree индексах. Поэтому если по полю есть индекс и колонка не объявлена как NOT NULL, то индекс может не использоваться. Указание в запросе NOT NULL позволяет использовать индекс при выполнении запроса.
...
Рейтинг: 0 / 0
25.06.2018, 12:33
    #39665260
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
здесь вполне вероятны "подсказки оптимизатору".
Но для для данного фрагмента, вырванного из контекста - сомнительной ценности.

В некоторых обстоятельствах подобное используют с целью рассказать оптимизатору о том,
что не надо отбрасывать вариант плана с использованием индекса, возможно многоколоночного, с включением в него reckoning_date
...
Рейтинг: 0 / 0
25.06.2018, 12:38
    #39665270
Никанор Кузьмич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
AmKadAlibek B.любое сравнение с null всегда будет давать false null unknown
...
Рейтинг: 0 / 0
25.06.2018, 12:50
    #39665279
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
По полю reckoning_date есть обычный индекс (не уникальный, не составной).
То есть я могу смело убирать проверку reckoning_date IS NOT NULL ?
Результат выборки от этого меняться не должен?
...
Рейтинг: 0 / 0
25.06.2018, 13:46
    #39665325
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
Alibek B.По полю reckoning_date есть обычный индекс (не уникальный, не составной).
То есть я могу смело убирать проверку reckoning_date IS NOT NULL ?
Результат выборки от этого меняться не должен?
результат выборки - не должен .
алгоритм её построения - может .
...
Рейтинг: 0 / 0
25.06.2018, 13:50
    #39665330
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
Сравнения достаточно,. is not null ничего не дает
...
Рейтинг: 0 / 0
25.06.2018, 13:52
    #39665332
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Требуется ли проверка на null при сравнениях?
В данном случае (любой оператор сравнения, кроме IS NULL) уже подразумевает для колонки NOT NULL
Т.е. если индекс возможен к использованию, он не будет проигнорирован
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Требуется ли проверка на null при сравнениях? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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