Мой вопрос теоретический. Произнесите следующий запрос (вариант A):
Select *
from orders o
inner join (
select *
from orderDetails
where product = 'shirt'
) od on o.orderId = od.orderId
По сравнению со следующим (вариант B)
Select *
from orders o
inner join orderDetails od on o.orderId = od.orderId
where od.product = 'shirt'
Есть ли какое-либо техническое преимущество одного перед другим? Например, у меня сложилось впечатление, что вариант A требует меньше ресурсов для БД, поскольку внутреннее соединение происходит на уже суженном количестве строк. Принимая во внимание, что вариант B дает тот же результат, однако он, кажется, выполняет внутреннее соединение для всех доступных orderId, прежде чем сузить его до рубашек.
Мне интересно узнать о конечном ударе b c, иногда хранимые процедуры становятся довольно большими, и я хотел бы убедиться, что они не влияют на время загрузки отчета без нужды.