Я написал CTE для получения фильтров диапазона дат и использую их в качестве своих фильтров даты для многораздельной таблицы (table2) с объединением. Запрос выполняется дольше, чем ожидалось, и объяснение показывает, что все разделы доступны, а не несколько.
with DT_FILT as (
select min(DT) as ST_DT, max(DT) as END_DT from schema1.table1
)
select TBL.col1 ,TBL.col2
from schema1.table2 TBL
join DT_FILT CTE
on 1=1
where TBL.DT between CTE.ST_DT and CTE.END_DT
Я также попробовал другой способ, используя подзапросы из CTE, это несколько лучше, чем раньше, но не так хорошо, как явное упоминание значений даты в фильтрах.
select TBL.col1 ,TBL.col2
from schema1.table2 TBL
where TBL.DT between (select ST_DT from CTE) and (select END_DT from CTE)
Может ли кто-нибудь помочь мне, как можно добиться более высокой производительности в этой ситуации, выбирая только целевые разделы из фильтров CTE?