|
Что-то намудрил в запросе, совет по оптимизации | ☑ | ||
---|---|---|---|---|
0
Victor111
15.11.16
✎
17:10
|
все работает но при прокрутки Журнала тормозит
Текст запроса: ВЫБРАТЬ ЖурналДокументовЗаказы.Дата КАК Дата, ЖурналДокументовЗаказы.Номер, ЖурналДокументовЗаказы.Тип, ЖурналДокументовЗаказы.Закрыт, ЖурналДокументовЗаказы.Сумма, ВЫБОР КОГДА ЕСТЬNULL(Оплачено.СуммаОборот, 0) <= ЕСТЬNULL(Оплачено.СуммаОплатыОборот, 0) + ЕСТЬNULL(Оплачено.СуммаАвансаОборот, 0) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Оплачено, ВЫБОР КОГДА ЕСТЬNULL(Отгружено.КоличествоПриход, 0) <> 0 И ЕСТЬNULL(Отгружено.КоличествоРасход, 0) <> 0 И ЕСТЬNULL(Отгружено.КоличествоКонечныйОстаток, 0) = 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Отгружено, ЖурналДокументовЗаказы.Ссылка.Контрагент ИЗ ЖурналДокументов.Заказы КАК ЖурналДокументовЗаказы ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ОплатаСчетовИЗаказовОбороты.СчетНаОплату.Ссылка КАК СчетНаОплатуСсылка, ОплатаСчетовИЗаказовОбороты.СуммаОборот КАК СуммаОборот, ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот КАК СуммаАвансаОборот, ОплатаСчетовИЗаказовОбороты.СуммаОплатыОборот КАК СуммаОплатыОборот ИЗ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты КАК ОплатаСчетовИЗаказовОбороты) КАК Оплачено ПО ЖурналДокументовЗаказы.Ссылка = Оплачено.СчетНаОплатуСсылка.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗаказыПокупателейОстаткиИОбороты.ЗаказПокупателя.Ссылка КАК ЗаказПокупателяСсылка, ЗаказыПокупателейОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход, ЗаказыПокупателейОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход, ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты КАК ЗаказыПокупателейОстаткиИОбороты) КАК Отгружено ПО ЖурналДокументовЗаказы.Ссылка = Отгружено.ЗаказПокупателяСсылка.Ссылка ГДЕ ЖурналДокументовЗаказы.Ссылка.Проведен = ИСТИНА |
|||
1
Господин ПЖ
15.11.16
✎
17:13
|
я бы тоже тормозил с подзапросом
|
|||
2
Лефмихалыч
15.11.16
✎
17:14
|
соединение с вложенным запросом быстро работать может разве что случайно
|
|||
3
Вафель
15.11.16
✎
17:15
|
||||
4
pavlika
15.11.16
✎
17:16
|
||||
5
vde69
15.11.16
✎
17:51
|
(2) (1) вы просто не умеете их готовить....
(0) слушай сюда (оцениваю по пятибальной системе) 1. использование виртуальных таблиц без параметров - сразу ДВА !!! РегистрНакопления.ОплатаСчетовИЗаказов.Обороты (сюда условий напихай) 2. условие через точку - максимум ТРИ ЖурналДокументовЗаказы.Ссылка = Оплачено.СчетНаОплатуСсылка.Ссылка (убрать ссылку) 3. использование составных типов - максимум ТРИ ЖурналДокументовЗаказы.Ссылка = Оплачено.СчетНаОплатуСсылка.Ссылка (первый параметр явным образом приведи к типу второго и ссылку уюери) |
|||
6
Лефмихалыч
15.11.16
✎
17:53
|
(5) что он в параметры передать может, если у него динамический список журнала документов?
|
|||
7
vde69
15.11.16
✎
17:56
|
(6) если не может ничего передать значит пусть использует физ таблицу....
а вообще самое минимальное что можно сделать это отбор по типу, это как минимум уберет заказы, оставит только счета... |
|||
8
Лефмихалыч
15.11.16
✎
17:57
|
(7) физическая таблица в данном случае ровным счетом ни как быстродействие не увеличит, т.к. соединений в вложенными только добавится
|
|||
9
Лефмихалыч
15.11.16
✎
17:58
|
вообще, документы с остатками - это отчет, а не журнал документов. Если прямо хотите шо аж мочи нет в журнале видеть, то, вот оно, смотрите, цена этого решения - тормоза при прокрутке.
|
|||
10
vde69
15.11.16
✎
17:59
|
(8) один большой джойн работает куда быстрее чем два маленьких вложенных.
|
|||
11
WebberNSK
15.11.16
✎
18:07
|
(0) сделать регистр сведений, заполнять при изменении итогов, в динамическом списке присоединять или использовать как основную таблицу.
|
|||
12
Лефмихалыч
15.11.16
✎
18:49
|
(10) ты целенаправленно игнорируешь, что это ДС и журнал документов или считаешь, что это не имеет значения?
|
|||
13
vde69
15.11.16
✎
21:35
|
(12) это не имеет значений...
динамический журнал с произвольным запросом собранный из разных таблиц (а не одной как задумано 1с) то же имеет право на жизнь до определенных "тонких" моментов. для сабжа имеет значение 3 вещи, которые вытекают из одного общего посыла 1. рельса (сабж нельзя делать если на основную таблицу наложена рельса) 2. дерево (сабж нельзя делать в дереве) 3. неопределенность данных (сабж нельзя делать с неявными джойнами, это и отсутствие типизации и виртуальные таблицы без индексов и т.д.) а этот самый посыл звучит так "нельзя делать динамический список если программа не может определить до выполнения запроса сколько записей нужно считать для обновления экрана" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |