![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странно работает запрос. [D7, XP]
Семен Кевларвестов © (2008-11-26 18:36:00)Доброго вечера!
В TQuery есть запрос вида:
select T1.Table1ID,
T2.Table2ID,
T3.Table3ID
from table1 T1 (nolock)
left join table2 T2 (nolock) on T2.Table2ID = T1.Table2ID
left join table3 T3 (nolock) on T3.Table3ID = T2.Table3ID
where T2.Table2ID = @SomeParam1and
T3.Table3ID = @SomeParam2
и в таком виде это работает очень медленно,
но если сделать так:
select T1.Table1ID,
T2.Table2ID,
T3.Table3ID
from table1 T1 (nolock)
left join table2 T2 (nolock) on T2.Table2ID = T1.Table2ID
left join table3 T3 (nolock) on T3.Table3ID = T2.Table3ID
where T1.Table2ID = @SomeParam1
T3.Table3ID = @SomeParam2
то все начинает работать очень быстро.
В QueryAnalyzer все работает одинаково, по крайней мере я разницы не заметил. Почему так?
clickmaker (2008-11-26 18:42:00) [1]потому что во втором случае сначала отбираются записи в Т1, а потом уже накладывается джоин
в QueryAnalyzer, возможно, хороший парсер запросов, он приводит первый вариант к более оптимальному