Azure Serverless SQL объединяет два OPENROWSET с низкой производительностью
У меня есть что-то вроде этого:
select a.*
from OPENROWSET( bulk 'tableA/Year=*/Month=*/**' ... ) a
inner join OPENROWSET( bulk 'tableB/Year=*/Month=*/**' ... ) b on b.id= a.ref_id
where a.filepath(1)= 2023 and a.filepath(2)= 11
and a.filepath(1)= b.filepath(1)
and a.filepath(2)= b.filepath(2)
По мнению Microsoft, это будет то же самое, что и подход с фиксированным путем:
select a.*
from OPENROWSET( bulk 'tableA/Year=2023/Month=11/**' ... ) a
inner join OPENROWSET( bulk 'tableB/Year=2023/Month=11/**' ... ) b on b.id= a.ref_id
Однако я вижу, что подход с фиксированным путем намного быстрее (сканирование данных 10 к 1), чем рекомендуемый подход к файлу (независимо от того, находится ли код внутри или вне представления).
Почему это происходит?
Примечание 1. Я ввел два последних условия в первый блок кода, чтобы посмотреть, смогу ли я принудительно сократить разделы.
Примечание 2. Если нет JOIN, я получаю точно такие же показатели/производительность.