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

Откуда: ☭
Сообщений: 72914
select *
from ah ah1 
inner join re on 
	ah1.ID = re.ID 
	and ah1.Date =	(
		select	 max(ah2.Date) 
		from	ah ah2 
		where	ah2.Date < re.Date 
				and ah2.ID2 = ah.ID2
	)

Условие джоина по дате сильно тормозит, индекс на ah ID ASC, Date ASC INCLUDE (ID2), предложенный планом запросов, помогает, но мало.
Можно ли тут что-то оптимизировать? Мне что-то ничего в голову не приходит.
8 сен 16, 16:57    [19643730]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
AmKad
Member

Откуда:
Сообщений: 5211
Antonariy,

Какая версия сервера? Приведи пример тестовых данных и желаемого результата.
8 сен 16, 17:15    [19643834]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
aleks2
Guest
select *
from re 
     cross apply (select top(1) * from ah where ah.ID = re.ID and ah.Date < re.Date order by ah.Date desc ) as ah1


Это не абсолютный эквивалент для случая наличия одинаковых дат ah.Date.
Но смысл такой...
8 сен 16, 17:15    [19643838]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
AmKad
Member

Откуда:
Сообщений: 5211
aleks2
Это не абсолютный эквивалент для случая наличия одинаковых дат ah.Date.
Да и условие равенства по id2 не учтено.
8 сен 16, 17:22    [19643892]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
iljy
Member

Откуда:
Сообщений: 8711
AmKad
aleks2
Это не абсолютный эквивалент для случая наличия одинаковых дат ah.Date.
Да и условие равенства по id2 не учтено.


Равенства чего чему?


А для эквивалентности можно TOP WITH TIES использовать.
8 сен 16, 17:24    [19643902]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
AmKad
Member

Откуда:
Сообщений: 5211
iljy
Равенства чего чему?

and ah2.ID2 = ah.ID2
8 сен 16, 17:32    [19643944]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
AmKad,

а отсутствие джоина вас не удивляет?
8 сен 16, 17:38    [19643978]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать запрос  [new]
AmKad
Member

Откуда:
Сообщений: 5211
TaPaK
AmKad,

а отсутствие джоина вас не удивляет?
Удивляет. Именно поэтому я спросил у автора об изначальной постановке.
8 сен 16, 17:49    [19644029]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить