Имя: Пароль:
1C
1С v8
этот запрос можно оптимизировать?
,
0 z01
 
17.07.13
16:03
|ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ТаблицаРасшифровкаПлатежа.Заказ КАК Заказ,
   |    ВЫБОР КОГДА ТаблицаРасшифровкаПлатежа.Заказ.Организация.ГоловнаяОрганизация = &Организация ТОГДА
   |        ТаблицаРасшифровкаПлатежа.Заказ.Организация
   |    ИНАЧЕ
   |        &Организация
   |    КОНЕЦ КАК Организация
   |
   |ПОМЕСТИТЬ ТаблицаОбъектовРасчетов
   |ИЗ
   |    Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК ТаблицаРасшифровкаПлатежа
   |    
   |ГДЕ
   |    ТаблицаРасшифровкаПлатежа.Ссылка = &Ссылка
   |    И &ХозяйственнаяОперация В (
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеТаможне)
   |        )
   |
   |ИНДЕКСИРОВАТЬ ПО
   |    Заказ
   |;
   |/////////////////////////////////////////////////////////////////////////////
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ТаблицаОбъектовРасчетов.Организация КАК Организация,
   |    &Контрагент КАК Контрагент,
   |    ТаблицаРасшифровкаПлатежа.Партнер КАК Партнер
   |ИЗ
   |    Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК ТаблицаРасшифровкаПлатежа
   |
   |    ВНУТРЕННЕЕ СОЕДИНЕНИЕ
   |        ТаблицаОбъектовРасчетов КАК ТаблицаОбъектовРасчетов
   |    ПО
   |        ТаблицаРасшифровкаПлатежа.Заказ = ТаблицаОбъектовРасчетов.Заказ
   |
   |    ЛЕВОЕ СОЕДИНЕНИЕ
   |        РегистрСведений.АналитикаУчетаПоПартнерам КАК Аналитика
   |    ПО
   |        ТаблицаОбъектовРасчетов.Организация = Аналитика.Организация
   |        И &Контрагент = Аналитика.Контрагент
   |        И ТаблицаРасшифровкаПлатежа.Партнер = Аналитика.Партнер
   |ГДЕ
   |    ТаблицаРасшифровкаПлатежа.Ссылка = &Ссылка
   |    И &ХозяйственнаяОперация В (
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеТаможне)
   |        )
   |    И Аналитика.КлючАналитики ЕСТЬ NULL
   |
   |ОБЪЕДИНИТЬ
   |
   |ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    &Организация КАК Организация,
   |    &Контрагент КАК Контрагент,
   |    ТаблицаРасшифровкаПлатежа.Партнер КАК Партнер
   |ИЗ
   |    Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК ТаблицаРасшифровкаПлатежа
   |
   |    ЛЕВОЕ СОЕДИНЕНИЕ
   |        РегистрСведений.АналитикаУчетаПоПартнерам КАК Аналитика
   |    ПО
   |        &Организация = Аналитика.Организация
   |        И &Контрагент = Аналитика.Контрагент
   |        И ТаблицаРасшифровкаПлатежа.Партнер = Аналитика.Партнер
   |ГДЕ
   |    ТаблицаРасшифровкаПлатежа.Ссылка = &Ссылка
   |    И &ЗаявкаНаРасходованиеДенежныхСредств <> ЗНАЧЕНИЕ(Документ.ЗаявкаНаРасходованиеДенежныхСредств.ПустаяСсылка)
   |    И &ХозяйственнаяОперация В (
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеТаможне)
   |        )
   |    И Аналитика.КлючАналитики ЕСТЬ NULL
1 Жан Пердежон
 
17.07.13
16:05
можно
следующий
2 z01
 
17.07.13
16:07
а как?
3 RomaH
 
naïve
17.07.13
16:09
|ИЗ
   |    Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК ТаблицаРасшифровкаПлатежа
   |
   |    ЛЕВОЕ СОЕДИНЕНИЕ
   |        РегистрСведений.АналитикаУчетаПоПартнерам КАК Аналитика
   |    ПО
   |        &Организация = Аналитика.Организация
   |        И &Контрагент = Аналитика.Контрагент
   |        И ТаблицаРасшифровкаПлатежа.Партнер = Аналитика.Партнер

например можно во временную для начала
4 RomaH
 
naïve
17.07.13
16:10
+
   |ГДЕ
   |    ТаблицаРасшифровкаПлатежа.Ссылка = &Ссылка
   |    И &ЗаявкаНаРасходованиеДенежныхСредств <> ЗНАЧЕНИЕ(Документ.ЗаявкаНаРасходованиеДенежныхСредств.ПустаяСсылка)
   |    И &ХозяйственнаяОперация В (
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеТаможне)
   |        )
   |    И Аналитика.КлючАналитики ЕСТЬ NULL
5 НЕА123
 
17.07.13
16:11
|    И &ХозяйственнаяОперация В (
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеТаможне)
   |        )

для чего?
6 hhhh
 
17.07.13
16:13
(2) вот это должно дико тормозить

 |    ЛЕВОЕ СОЕДИНЕНИЕ
   |        РегистрСведений.АналитикаУчетаПоПартнерам КАК Аналитика


потому что ты весь регистр присоединяешь.
7 viktor_vv
 
17.07.13
16:29
(6) С чего бы ему торомозить-то ?
8 z01
 
18.07.13
09:22
я вот думаю если временную таблицу в запрос обратно запихнуть лучше не станет?
9 viktor_vv
 
18.07.13
09:32
(8) А что значит тормозит? Там же вроде по одному документу выполяется, не должно тормозить особо. Может оно конечно в цикле выполняется :).
Выполни их отдельными запросами,чтобы понять на каком тормоза.
10 hhhh
 
18.07.13
09:45
(7) допустим в регистре сто миллионов записей. И они все попадают в проверку левого соединения.
11 hhhh
 
18.07.13
09:47
(10)+ я понял почему, поле Аналитика.Партнер в регистре не проиндексировано.
12 z01
 
18.07.13
09:52
(9)обработка загрузки тащит это счастье по com. мне показалось что как-то не очень шустро и замер показал что именно исполнение это запроса сожрало около 35% времени. остальное мелочи.
13 z01
 
18.07.13
09:54
(11)всё что там можно проиндексировать из 1С уже проиндексировано, сам скуль вроде не сообщает о необходимости дополнительных индексов
14 kosts
 
18.07.13
09:57
Операция "В" может быть не оптимальной, попробуй для эксперимента сделать отдельные запросы, а потом объединить.
15 kosts
 
18.07.13
10:00
Кстати


&ХозяйственнаяОперация В (
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОплатыКлиенту),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаПоставщику),
   |        ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПеречислениеТаможне)
   |        )


что за конструкция, это же можно вычислить вне запроса
16 viktor_vv
 
18.07.13
11:05
(10) А какая разница сколько там записей? При создании временной таблицы так же само условие будет проверяться по всем записям.
Таки там наличие подходящих индексов играет роль.