У меня есть вариант использования, где у меня есть выбор: применить NVL
или COALESCE
.
пример: COALESCE(col_1,'alternate_string')
NVL(col_1,'alternate_string')
Я знаю про IS NULL
и IS NOT NUll
, но подскажите, как я его адаптирую к этому запросу:
DELETE FROM TABLE_1 T1 USING TABLE_2 T2 WHERE T1.col_1 = T2.col1 t1.col2 = t2.col2
и так далее. ..... Должен ли я использовать для этого кейсы?
Как будет обрабатывать логические типы.
Я хочу знать, какой из них работает быстрее с точки зрения времени выполнения в AWS Redshift?
Так почему ты спрашиваешь? В чем настоящая проблема?
@PanagiotisKanavos, я удаляю записи из одной таблицы, используя другую таблицу, ставя условие where, и мы знаем, что null = null дает false. Итак, я делал это, но теперь я думаю, что перейду к Intersection.
Вы делаете это неправильно тогда. Правильный способ сравнения значений NULL в SQL — использовать IS NULL
или IS NOT NULL
. То, что вы делаете, игнорирует индексы и заставляет запрос сканировать всю таблицу, преобразовывать все значения и только затем фильтровать те, которые необходимо удалить.
@PanagiotisKanavos, я знаю о IS NULL и IS NOT NUll, но скажите мне, как я могу адаптировать его к этому запросу: УДАЛИТЬ ИЗ TABLE_1 T1, ИСПОЛЬЗУЯ TABLE_2 T2, ГДЕ T1.col_1 = T2.col1 t1.col2 = t2.col2 и так далее . ..... Должен ли я использовать для этого кейсы?
Отредактируйте вопрос и добавьте туда запрос, объяснив, что вы действительно хотите сопоставить. Если вы хотите сопоставить нулевые значения в обеих таблицах, вы должны использовать t1.col1 is null and t2.col2 is null
Ответ NA =
Not Applicable
. Быстрее в каком запросе? Если вы используете это в предложении WHERE, оба будут ужасно медленными, поскольку оба предотвратят использование индексов. Если вы используете это вSELECT
, это не имеет значения, потому что время запроса занимает чтение и фильтрация данных. Простая замена нуля тривиальна по сравнению с этим