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


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 19. Февраля 2008
Очень медленно работает запрос к регистру ПартииТоваров
27. Сентября 2011 :: 10:59
Печать  
Есть простой запрос к регистру партии товаров для выборки продажс фильтром по клиенту и товару
SELECT
     $Рег.Контрагент as [Клиент $Справочник.Контрагенты],
     $Рег.Товар as [Товар $Справочник.Номенклатура],  
     (1-Рег.debkred) * $Рег.ОстатокТовара AS ВозвратКво,
     (Рег.debkred)      * $Рег.ОстатокТовара AS ПродажаКво,
     (1-Рег.debkred) * $Рег.Оборот AS ВозвратОборот,
     (Рег.debkred)      * $Рег.Оборот AS ПродажаОборот
FROM $Регистр.ПартииТоваров as Рег (NOLOCK)
INNER JOIN _1Sjourn as Жур (NOLOCK) ON Жур.IDDoc = Рег.IDDOC
WHERE
     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~  
AND $Рег.Контрагент  = :ВыбКлиент
AND $Рег.Товар  = :ВыбТовар

Работает очень медленно. Стандартный 1С запрос отрабатывает гораздо быстрее. Еще быстрее работает запрос по документам с использованием графы отбора по контрагенту. Но из регистра нужно выбирать себестоимость проданного товара. В регистре Товар - это измерение, а Контрагент - реквизит. Как ускорить выполнение запроса?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #1 - 27. Сентября 2011 :: 11:35
Печать  
тебе нужно связаться не с _1Sjourn а с _1SCrDoc
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #2 - 27. Сентября 2011 :: 11:40
Печать  
примерно так:
FROM $Регистр.ПартииТоваров as Рег (NOLOCK)
INNER JOIN _1Scrdoc as Графы (NOLOCK) ON right(Графы.child_date_time_iddoc, 9) = Рег.IDDOC
WHERE Графы.child_date_time_iddoc BETWEEN :НачДата AND :КонДата~   
AND Графы.parentval  = :ВыбКлиент*
AND Графы.mdid = $ГрафаОтбора.Контрагенты
AND $Рег.Товар  = :ВыбТовар
  

1&&2&&3
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #3 - 27. Сентября 2011 :: 11:49
Печать  
Судя по "Стандартный 1С запрос отрабатывает гораздо быстрее", там ещё включён отбор движений по товарам.  Нерешительный
  

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



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #4 - 27. Сентября 2011 :: 11:55
Печать  
berezdetsky писал(а) 27. Сентября 2011 :: 11:49:
Судя по "Стандартный 1С запрос отрабатывает гораздо быстрее", там ещё включён отбор движений по товарам.  Нерешительный

Не исключено.
Но и при отборе по конту быстрее тоже будет не мало.
  

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


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 19. Февраля 2008
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #5 - 27. Сентября 2011 :: 12:04
Печать  
Спасибо! Буду пробовать. Отбор по товару не включен. Просто глянул в профайлере код 1с запроса, там from _1Sjourn и left join с регистром и справочниками. Вообщем, не могу понять, почему мой запрос работает очень медленно, примерно раз в 10-15 чем 1С.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #6 - 27. Сентября 2011 :: 12:24
Печать  
tibank писал(а) 27. Сентября 2011 :: 12:04:
Спасибо! Буду пробовать. Отбор по товару не включен. Просто глянул в профайлере код 1с запроса, там from _1Sjourn и left join с регистром и справочниками. Вообщем, не могу понять, почему мой запрос работает очень медленно, примерно раз в 10-15 чем 1С.

попробуй в тестовом примере убрать все debkred
У меня в аналогичных примераx  все написано через case
без умножений и вычитаний

  
Наверх
 
IP записан
 
tibank
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 19. Февраля 2008
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #7 - 28. Сентября 2011 :: 09:08
Печать  
Z1 писал(а) 27. Сентября 2011 :: 12:24:
попробуй в тестовом примере убрать все debkred
У меня в аналогичных примераx  все написано через case
без умножений и вычитаний


Это особо не влияло на время выполнения запроса. Я нашел в чем проблема. Добавив в условие $ФлагРегистра.ПартииТоваров = 1 запрос стал просто летать. Всем откликнувшимся спасибо!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #8 - 28. Сентября 2011 :: 09:15
Печать  
удивительное - рядом Круглые глаза
  

1&&2&&3
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #9 - 29. Сентября 2011 :: 07:45
Печать  
trad писал(а) 28. Сентября 2011 :: 09:15:
удивительное - рядом Круглые глаза


Иначе и не скажешь. Особенно, учитывая, что на поля RF* никаких индексов нет и впомине...


топикстартеру - а если регистру поставить галку "быстрая обработка движений" то джойн с журналом не потребуется (поля Date_Time_IDDoc и IDDocDef будут в таблице движений). Еще, кажется, наличие галки "отбор движений" хотя бы на одном измерении дает такой же эффект.
  
Наверх
 
IP записан
 
tibank
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 19. Февраля 2008
Re: Очень медленно работает запрос к регистру ПартииТоваров
Ответ #10 - 30. Сентября 2011 :: 12:58
Печать  
Satans Claws писал(а) 29. Сентября 2011 :: 07:45:
trad писал(а) 28. Сентября 2011 :: 09:15:
удивительное - рядом Круглые глаза


Иначе и не скажешь. Особенно, учитывая, что на поля RF* никаких индексов нет и впомине...


топикстартеру - а если регистру поставить галку "быстрая обработка движений" то джойн с журналом не потребуется (поля Date_Time_IDDoc и IDDocDef будут в таблице движений). Еще, кажется, наличие галки "отбор движений" хотя бы на одном измерении дает такой же эффект.


Про быструю обработку движений в курсе, буду использовать. Просто база достаточно большая, неохота сейчас делать реструктуризацию. А по поводу поля RF, я увидел это в запросе с использование виртуальных таблиц и в профайлере, когда выполнялся стандартный 1С запрос, просто вначале, я не обратил на это поле внимания, а после 2 дней мытарств решил попробовать (пробовал уже все подряд).
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать