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


Автор: Fedorenkoda 21.8.2002, 13:52
В запросе участвуют примерно 100000 записей.

1 вариант(время выполнения 26 секунд):

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')),
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p
where c.Branch=1 and c.Client=p.Client
    and p.ServiceType=2
    and (p.Period between '07/01/02' and '08/01/02')),0.00


2 вариант(время выполнения 2 минуты 46 секунд):
declare @period1 datetime,@period2 datetime
select @period1='07/01/02'
select @period2=dateadd(month,1,@period1)

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 @period1 and @period2)),
(select isnull(sum(p.Summa),0.00)
from Client c , Pers_Account p
where c.Branch=1 and c.Client=p.Client
    and p.ServiceType=2
    and (p.Period between @period1 and @period2)),0.00

В чем же разница между запросами?

Автор: AntonSaburov 16.10.2002, 23:23
Здесь надо план запроса смотреть. Какие индексы используются и прочая. Т.к. оптимизатор делает все сам, то надо его и спросить. А так не ответить.
Кроме того попробовать UPDATE STATISTICS - может тогда планы вообще станут одинаковые.

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