D
левая таблица большая(700кк), справа два справочника(45к, 300 строк).
к первому по двум столбцам any left join (по дате и ид), ко второму по ид. Проблема в производительности.
Нужно это для того, чтобы если из первого справочника совпадений не найдено, то во втором точно будут. Это все для coalesce в select.
DJ пытался мне помочь(select tableft join (select t1 join t2 on t1.id=t2.id)), но, к сожалению, это не помогает, потому что соединение левой и правой части должно быть по 2 полям(чтобы совместить дату и ид.)
Мб есть какие-то еще варианты?
Примерный вид запроса такой:
select t.val, coalesce(t1.val1, t2.val2) from t
any left join t1 on t.date=t1.date and t.id=t1.id
any left join t2 on t.id=t2.id
так можете попробовать ещё
select t.val, tboth.val from t
LEFT ASOF JOIN
(
select t1.date, t1.val from t1
UNION ALL
select toDate(1) as date, t2.val from t2
) tboth
on t.id=t1.id and t.date<=t1.date;