Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите пожалуйста с запросом  [new]
дохнесс
Guest
Запрос такой

 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 май 15, 17:51    [17651831]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Разве что индексированной вьюхой.
17 май 15, 18:54    [17651976]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
дохнесс
Guest
Гавриленко Сергей Алексеевич
Разве что индексированной вьюхой.


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

Проблема в том, в что таблице [f] 11 000 000 записей
17 май 15, 19:39    [17652109]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Индексированное представление не взлетит - потому что left join и min.
Можете попробовать option(hash group)
А вообще, показывайте актуальный план в формате sqlplan.
17 май 15, 19:55    [17652164]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
invm
Индексированное представление не взлетит - потому что left join и min.
В принципе можно сделать индексированное представление на [f].[Id], [f].[CId], min([f].[Date])

Но вообще лучше посмотреть план, и структуру таблиц, может, придёт какая то мысль...
17 май 15, 20:31    [17652276]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с запросом  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
alexeyvg
В принципе можно сделать индексированное представление на [f].[Id], [f].[CId], min([f].[Date])
Нельзя на min сделать индексированное представление.
А даже если бы было можно, не поможет - для одинаковых [f].[Id], [f].[CId] и разных [d].[Excel] и [d].[P] может быть разная min([f].[Date]).
17 май 15, 21:02    [17652380]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить