написания запроса обнаружил неочевидное для меня поведение...
Есть два обобщенных табличных выражения - user_cohort и user_devices (там нетривиально все вычисляется, поэтому пока так). Пишу запрос к ним:
SELECT
uc.user_id,
uc.date_joined,
uc.first_validated_at,
ud.serial,
ud.created_at,
ud.is_validated
FROM
user_cohort uc
INNER JOIN
user_devices ud
ON
ud.user_id = uc.user_id
WHERE
ud.created_at BETWEEN '2021-12-01' AND '2021-12-31'
Все работает нормально и быстро, если пишу * вместо списка полей, что логично - тоже работает, но если убираю последнее поле из блока SELECT (is_validated) - запрос не ругается, но нагружает сервер на сколько может и выполняется "вечно". С ситуацией, когда ни в блоке SELECT ни в блоке WHERE не указано ни одно из полей правой таблицы все понятно, но хотелось бы понять, как работает в этом случае, чтобы в будущем учитывать и не допускать. Никто не сталкивался с подобным?
Вы хотите узнать как работает Join в CH ?
В целом сейчас как раз изучаю документацию, но если есть более "точечное" объяснение именно описанному случаю (хотя бы наводка, в какую сторону рыть) - было бы здорово...
Обсуждают сегодня