Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Замедление запроса при проведении документа (число прочтений - 2675 )
Ager
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 21. Сентября 2006
Замедление запроса при проведении документа
21. Сентября 2006 :: 09:58
Печать  
Имеется запрос по расчету остатка:
ТекстСКЛ = "
|select
|  Товар [Товар $Справочник.Номенклатура],
|  sum(Количество) Количество,
|  sum(Остаток) Остаток,
|  sum(Резерв) Резерв,
|  sum(РезервПоСчету) РезервПоСчету
|from(
|  select
|    $Строки.Товар Товар,
|    $Строки.Количество*$Строки.Коэффициент Количество,
|    0 Остаток,
|    0 Резерв,
|       0 РезервПоСчету
|  from $ДокументСтроки.РасходнаяНакладная Строки (nolock)
|
|      Inner Join
|      $Справочник.Номенклатура As СпрН (Nolock) On СпрН.ID = $Строки.Товар And ||$СпрН.ВидТовара <> :Услуга
|  where Строки.iddoc = :ТекДок
|
|      union all
|
|  select
|    Right(Товар,9) Товар,
|       0 Количество,
|    ОстатокТовараОстаток Остаток,
|    0 Резерв,
|       0 РезервПоСчету
|  from $РегистрОстатки.ОстаткиТоваров(
|         :Позиция~,
|         join(
|                    select Distinct $Строки.Товар СтрТовар
|                    from $ДокументСтроки.РасходнаяНакладная Строки (nolock)
|                    where Строки.iddoc = :ТекДок
|                  )Док on $ВидСправочника36.Номенклатура + Док.СтрТовар = Товар,,
|                  (Склад = :Склад),
|         (Товар,Склад),ОстатокТовара
|       ) Остатки

|      union all
|
|  select
|    Товар,
|       0 Количество,
|    0 Остаток,
|    РезервТовараОстаток Резерв,
|      ПоСчету  РезервПоСчету
|  from $РегистрОстатки.РезервыТоваров(
|         :Позиция~,
|         join(
|                    select Distinct $Строки.Товар СтрТовар
|                    from $ДокументСтроки.РасходнаяНакладная Строки (nolock)
|                    where Строки.iddoc = :ТекДок
|                  )Док on Док.СтрТовар = Товар,
|          (Статус = :Жестко And ПоСчету = :ДокРезервирования),
|         (Товар,Статус,ПоСчету),РезервТовара
|       ) Резервы
|  where РезервТовараОстаток>0
|)tmp
|group by Товар
|having (sum(Количество) > sum(Остаток) Or (sum(Количество) > sum(Остаток) - sum(Резерв) And sum(Количество) > sum(РезервПоСчету)))
|";
                 
ТЗ = Recordset.ВыполнитьИнструкцию(ТекстСКЛ);

Запрос расположен в модуле расходной накладной. Сначала все было замечательно - время проведения уменьшилось. Но пару дней назад начались транзакции. В процессе разбирательства выяснилось, что этот запрос стал выполнятся намного медленее (раз в 10 - 20). Пробовал на старой тестовой базе - проводилось нормально, накатил бэкап основной базы - сразу же тормоза. В чем может быть проблема?

Релиз 1С - 25. Релиз 1С++ - 2.0.3.1
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Замедление запроса при проведении документа
Ответ #1 - 21. Сентября 2006 :: 10:41
Печать  
sp_updatestats ?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Замедление запроса при проведении документа
Ответ #2 - 21. Сентября 2006 :: 11:41
Печать  
очень рекомендую (если еще не установлено): отбор движений по измерению Товар в обоих регистрах
  

1&&2&&3
Наверх
 
IP записан
 
Ager
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 21. Сентября 2006
Re: Замедление запроса при проведении документа
Ответ #3 - 21. Сентября 2006 :: 12:04
Печать  
Сделал переиндексацию. Вроде все вернулось на место.
  
Наверх
 
IP записан
 
Ager
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 21. Сентября 2006
Re: Замедление запроса при проведении документа
Ответ #4 - 21. Сентября 2006 :: 12:10
Печать  
Сделал переиндексацию. Вроде все вернулось на место.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать