Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Вопрос о времени на засыпку


Автор: Fedorenkoda 21.8.2002, 20:51
Уважаемые знатоки!

1 запрос
Select 'ДГТС ','Абонентная плата','КВС',
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p , DEVICENUMBER d
where d.Fine>10 and p.Number=d.Number and (c.Branch=1)
and c.Client=p.Client and p.ServiceType=2
and (p.Period between '07/01/02' and '08/01/02'))

2 запрос
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p , DEVICENUMBER d
where d.Fine>10 and p.Number=d.Number and (c.Branch=1)
and c.Client=p.Client and p.ServiceType=2
and (p.Period between '07/01/02' and '08/01/02'))

Давайте абстрагируемся от индексов и всего прочего.
Почему первый запрос работает 5 секунд, а второй 7 секунд.

Автор: Vit 21.8.2002, 22:11
Давай вернёмся к нашему разговору - ты пробовал поставить индексы на это поле? И вообще совет - поставь индекс на каждое поле в конструкции Where.

Разница во времени может быть связана с стадией приготовления квери для выполнения. Кроме того в Query Analyser, я уже не помню где точно, можно посмотреть схему выполнения квери, возможно из-за незначительных изменений SQL сервер выбрал из 2х приблизительно равнозначных(по предварительным оценкам) вариантов разные...


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)