в LEFT JOIN правая таблица большая, можно фильровать ее левой, чтобы не писать подзапросы каждый раз? Это частый кейс, когда к какой-то таблице за день надо приджойнить словарные значения, но все такие словари не хочется класть в Dict, и приходится везде писать такие подселекты
select t.*, t2.prop
from t /* 10М строк */
left join (
select id, prop
from t2 /* 500М строк */
where id in ( /* вот теперь тоже 10М строк */
select id from t where date = today()-1
)
) t2
on t2.id = t.id
where t.date = today()-1
Это экономит память и появляется постоянно, кажется такое можно автоматизировать. Или я сижу на старой версии и все проспал?
Не оч понял А почему не Select t_sub.*, dim.prop from t2 as dim all inner join (select...from t where date=today()) as t_sub on dim.id = t_sub.id ? Для гарантии плана можно в подзапрос t_sub фиктивный лимит добавить на ваши 10+ миллионов
Обсуждают сегодня