Помогите пожалуйста с запросом

дохнесс
Дата: 17.05.2015 17:51:57
Запрос такой

 SELECT  
          [f].[Id],
          min([f].[Date])as date),
          [d].[Excel],
          [PID]=case when [d].[P]='да' then 1 else -1 end	
 FROM [f]
            left join [d]   
                           on [d].[CId]=[f].[CId]
 where 1=1
 group by 
             [f].[Id],
             [d].[Excel],
             [d].[P]


Проблема в запросе sort 89%
Можно так то исправить инндексами?
Гавриленко Сергей Алексеевич
Дата: 17.05.2015 18:54:50
Разве что индексированной вьюхой.
дохнесс
Дата: 17.05.2015 19:39:55
Гавриленко Сергей Алексеевич
Разве что индексированной вьюхой.


Спасибо,
Чтобы заранее самому отсоритровать таблицу?

Проблема в том, в что таблице [f] 11 000 000 записей
invm
Дата: 17.05.2015 19:55:33
Индексированное представление не взлетит - потому что left join и min.
Можете попробовать option(hash group)
А вообще, показывайте актуальный план в формате sqlplan.
alexeyvg
Дата: 17.05.2015 20:31:43
invm
Индексированное представление не взлетит - потому что left join и min.
В принципе можно сделать индексированное представление на [f].[Id], [f].[CId], min([f].[Date])

Но вообще лучше посмотреть план, и структуру таблиц, может, придёт какая то мысль...
invm
Дата: 17.05.2015 21:02:33
alexeyvg
В принципе можно сделать индексированное представление на [f].[Id], [f].[CId], min([f].[Date])
Нельзя на min сделать индексированное представление.
А даже если бы было можно, не поможет - для одинаковых [f].[Id], [f].[CId] и разных [d].[Excel] и [d].[P] может быть разная min([f].[Date]).