Если вы можете избежать select distinct
(и count(distinct)
), тогда это хорошая идея.Это приводит к дополнительным накладным расходам на удаление дубликатов.
Таким образом, наилучшим подходом будет фильтрация в предложении where
, используя in
или exists
:
select p.Name, p.Price
from Product p
where exists (select 1
from ProductSupplier ps inner join
Supplier s
on s.Supplier_ID = ps.Supplier_ID
where ps.Product_ID = p.Product_ID and s.Location = 'Australia'
);
Это должноиметь лучший план выполнения.