| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 - может тогда планы вообще станут одинаковые. |