Имею запрос [sql] "select DOCNO НомерДок ,cast(left(Date_time_Iddoc,8) as datetime) ДатаДок ,$ОбщийРеквизит.Контрагент [Контрагент $Справочник.Контрагенты] ,$Счет.СуммаСНДС [Сумма $Число] ,$Валюта.Кратко [Валюта $Строка] ,$ОбщийРеквизит.Автор [Автор $Справочник.Пользователи] ,ПоСчету [ТекущийДокумент $Документ.Счет]
from $РегистрОстатки.РезервыТоваров( ,,,(ПоСчету)) Резервы join _1sjourn Ж (nolock) on ПоСчету=Ж.Iddoc join $Документ.Счет Счет (nolock) on ПоСчету=Счет.Iddoc join $Справочник.Валюты Валюта (nolock) on $Счет.Валюта=Валюта.ID
where Ж.Date_time_Iddoc between :НачДата and :КонДата~ order by Date_time_Iddoc
[/sql] - вобщем, выбирает все документы-счета, по которым резервы остались. Так вот, с "order by Date_time_Iddoc" этот запрос ужасно тормозит! Выборка без "order by" и последующим упорядочиванием в 1Ске происходит существенно быстрее.
То же самое если этот же запрос (распарсенный, естественно) в QA засунуть - без ордера - быстро, с ордером - тормоз.
Планы выполнения: с включенным ордером - упорядочивание и фильтр(НачДата,КонДата) по журналу, потом связь с выборкой по vt регистра. без ордера - выборка по vt регистра, связь ее с журналом, и потом фильтр по (НачДата,КонДата). Что с ним делать? Попробовал option(FORCE ORDER) - т.е. планировать именно в том порядке как в запросе написано - вроде подходит, но точно в ее необходимости я не уверен. Что еще посоветуете серваку подсказать?
ps. Никто не знает, можно ли план выполнения в виде текста получить? или QA его только графиком дает?
|