Информация об изменениях

Сообщение Re: Уменьшить nested loops MS SQL 2014 от 08.09.2016 6:24

Изменено 08.09.2016 6:24 gka

Здравствуйте, Sаныч, Вы писали:

S>Есть запрос вида:


S>
S>select *,
S>(select * from Client c on c.Product = p.Id) as ClientCount,
S>(select max(Date) from Client c on c.Product = p.Id) as LastClient,
S>from Product p
S>


S>Здесь двада вложенных select, которые фильтруют один и тот же диапазон из ссылаемой таблицы. Можно ли сделать так, чтобы был только один скан второй таблицы?


select Distinct p.*, count(*) over (partition by c.Product), max(Date) over (partition by c.Product) from Product p inner join Client c on c.Product = p.Id
Re: Уменьшить nested loops MS SQL 2014
Здравствуйте, Sаныч, Вы писали:

S>Есть запрос вида:


S>
S>select *,
S>(select * from Client c on c.Product = p.Id) as ClientCount,
S>(select max(Date) from Client c on c.Product = p.Id) as LastClient,
S>from Product p
S>


S>Здесь двада вложенных select, которые фильтруют один и тот же диапазон из ссылаемой таблицы. Можно ли сделать так, чтобы был только один скан второй таблицы?


select Distinct p.*, count(*) over (partition by c.Product), max(Date) over (partition by c.Product) from Product p inner join Client c on c.Product = p.Id