Pull to refresh

Comments 11

Ждём статью как Вы сделали запрос из 2х таблиц по 10млн. строк в каждой без указания связей и условий.

Дельное замечание. Thx! Что написание кода, что написание статей требует опыта. В следующий раз обогащу текст кодом, чтобы помимо веселых картинок был невеселый запрос.

В чистом MS SQL - нет. А вот в SQL, используемом в SAS, - вполне. Для меня это было хорошим напоминанием о важности изучения правил среды, в которой работаешь.

Насколько я помню, в SAS при джойне PROC SQL сначала создает декартово произведение таблиц, а уже потом применяет условия. Чтобы избежать лишние операции, можно использовать опции датасетов (where=(^missing(key2)), эта штука отбросит не проходящие условие записи еще на этапе чтения из датасета.

Очень жаль, что ни одного запроса на sql в статье не присутствует.

NULL в SQL любит удивлять, что поделать.

declare @a int
declare @b int
set @a = 1
set @b = NULL
if @a != @b select 'а не равно b'
else select 'а равно b'

Если не знаешь, что операции сравнения с null возвращают unknown, который не true, и не false, то да, сплошное удивление.

Логика не двоичная используется с null.

В else "идёт" то, что не true. unknown - не true, поэтому попадает в else.

А нельзя было просто выбрать вначале в промежуточные таблицы без NULL? Это же из разряда "не ленись расставлять скобки, не верь компьютеру". Использовать DISTINCT тоже такое, говорят, что быстрее и правильнее применять GROUP BY. Я, впрочем, по лености не гнушаюсь DISTINCT-а, но не в пром.коде.

Sign up to leave a comment.