Почему так?
От: Egor_M  
Дата: 29.01.03 13:26
Оценка:
Написал запрос вида


select t1.f1,t1.f2,t2,f1,t3.f1 from table1 t1 
left outer join table2 on ( .... ) 
left outer join table3 t3 on ( t3.FK=(select top 1 PK form Table4 where f1=t1.f1 ...) )


На 2000-ом SQL Server'е запрос отрабатывал долго, но работал .

На 7-ом SQL Server'е запрос работал очень долго и в конце-концов приходило сообщение о тайауте.

Начал эксперементировать,
сначала заменил второй
left outer join
на
inner join

, запрос работал с такой же скоростью как на 2000-м но выдавал не все интересующие данные.

Потом вернул
left outer join

на место, по заменил
t3.FK=(select top 1 PK form Table4 where f1=t1.f1 ...)

на
t3.FK in (select top 1 PK form Table4 where f1=t1.f1 ...)

и запрос стал просто летать(скорость раз в 5 увеличилась) на 7-м, 2000-й к сожаления снес и проверить не смог.

Стало еще интереснее, уже в измененном запросе снова заменил второй
left outer join

на
inner join

, запрос снова работал долго и ушел в таймаут.

Кто-нибудь может сказать почему так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.