|
Оптимизация запроса 1с | ☑ | ||
---|---|---|---|---|
0
Alishman
26.02.15
✎
13:15
|
Добрый день Как можно оптимизировать этот запрос?. На данный момент время исполнения 1 минута. Мне кажется это слишком долго?
ВЫБРАТЬ ТиповойДвиженияССубконто.СубконтоДт1, ТиповойДвиженияССубконто.СубконтоДт2, ТиповойДвиженияССубконто.Сумма КАК Сумма ПОМЕСТИТЬ Таблица1 ИЗ РегистрБухгалтерии.Типовой.ДвиженияССубконто КАК ТиповойДвиженияССубконто ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОперацияБух КАК ОперацияБух ПО ТиповойДвиженияССубконто.Регистратор = ОперацияБух.Ссылка ГДЕ (ТиповойДвиженияССубконто.СчетКт = &СчетКт ИЛИ ТиповойДвиженияССубконто.СчетКт = &СчетКт2 ИЛИ ТиповойДвиженияССубконто.СчетКт = &СчетКт3 И ГОД(ТиповойДвиженияССубконто.Период) = &Период) СГРУППИРОВАТЬ ПО ТиповойДвиженияССубконто.СубконтоДт1, ТиповойДвиженияССубконто.СубконтоДт2, ТиповойДвиженияССубконто.Сумма ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТиповойДвиженияССубконто.СубконтоДт1, ТиповойДвиженияССубконто.СубконтоДт2, СУММА(ТиповойДвиженияССубконто.Сумма) КАК Сумма ПОМЕСТИТЬ Таблица2 ИЗ РегистрБухгалтерии.Типовой.ДвиженияССубконто КАК ТиповойДвиженияССубконто ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОперацияБух КАК ОперацияБух ПО ТиповойДвиженияССубконто.Регистратор = ОперацияБух.Ссылка ГДЕ ТиповойДвиженияССубконто.СчетКт = &СчетКт4 И ГОД(ТиповойДвиженияССубконто.Период) = &Период СГРУППИРОВАТЬ ПО ТиповойДвиженияССубконто.СубконтоДт1, ТиповойДвиженияССубконто.СубконтоДт2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(Таблица1.СубконтоДт1, Таблица2.СубконтоДт1) КАК Организация, ЕСТЬNULL(Таблица1.СубконтоДт2, Таблица2.СубконтоДт2) КАК Договор, ЕСТЬNULL(Таблица1.Сумма, Таблица2.Сумма) КАК Сумма ПОМЕСТИТЬ Таблица3 ИЗ Таблица1 КАК Таблица1 ПОЛНОЕ СОЕДИНЕНИЕ Таблица2 КАК Таблица2 ПО Таблица1.СубконтоДт1 = Таблица2.СубконтоДт1 И Таблица1.СубконтоДт2 = Таблица2.СубконтоДт2 И Таблица1.Сумма = Таблица2.Сумма ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таблица3.Организация, Таблица3.Договор, Таблица3.Сумма ИЗ Таблица3 КАК Таблица3 СГРУППИРОВАТЬ ПО Таблица3.Организация, Таблица3.Договор, Таблица3.Сумма |
|||
1
Ёпрст
26.02.15
✎
13:17
|
(0) для начала, выкинуть левое соединение, которое нигде не используется
|
|||
2
Ёпрст
26.02.15
✎
13:18
|
ОперацияБух твоя, не участвует ни в селекте, ни в условии..
|
|||
3
Ёпрст
26.02.15
✎
13:19
|
ну и..куча временных не нужна - всё можно написать в одном запросе..
|
|||
4
Рэйв
26.02.15
✎
13:19
|
сгруппировать по
... ТиповойДвиженияССубконто.Сумма тоже весело смотрится:-) |
|||
5
D_E_S_131
26.02.15
✎
13:21
|
(1) Может просто "ЛЕВОЕ" заменить на "ВНУТРЕННЕЕ"?
|
|||
6
Рэйв
26.02.15
✎
13:22
|
(5)Взять движения документа можно менее затратным путем.
|
|||
7
Рэйв
26.02.15
✎
13:23
|
мне кажется ТС именно движения по документу хочет
|
|||
8
Ёпрст
26.02.15
✎
13:24
|
(5) хз, что ему надо..
"оптимизируем" что есть :))))))) |
|||
9
D_E_S_131
26.02.15
✎
13:25
|
(7) Думаю даже, что по движению именно вида документа "ОперацияБух". Но вот я не скажу, что будет работать оптимальнее "Внутреннее" соединение или условие "Регистратор ССЫЛКА Документ.ОперацияБух".
|
|||
10
Мыш
26.02.15
✎
13:29
|
(0) Неправильный подход. Бери сначала основную таблицу с отбором по регистратору фильтруй что требуется, а потом к ней соединяй таблицу "Субконто".
|
|||
11
Alishman
26.02.15
✎
13:40
|
(3) Левое убрал, в одном запросе не получится потому что суммы по 4 счета идут по месяцам
|
|||
12
Ёпрст
26.02.15
✎
13:44
|
(11) всё получится.. case и привет - будет тебе 4 суммы по разным счетам
|
|||
13
D_E_S_131
26.02.15
✎
13:50
|
Вот что-то я теперь через "призму (12) не понимаю разницы между данными в Таблица1 и Таблица2, если они потом в итоге соединяются. Почему бы просто не поставить сразу условие
|
|||
14
Alishman
26.02.15
✎
14:04
|
(13) В таблице 1 суммы идут сразу за год, а в таблице 2 суммы идут по месяцам, я их просуммировал только потом объединил. Если сделать как вы просите я не смогу их сгруппировать потом. Товарищ Ёпрст предложил вариант щас по нему работаю но как реализовать пока не понял
|
|||
15
D_E_S_131
26.02.15
✎
14:29
|
(14) Может еще и соединение в Таблице3 по полю "Сумма" имеет обоснование? Тогда станет совсем понятно, что Вы там пытаетесь сделать.
|
|||
16
karabas11
26.02.15
✎
17:05
|
1. Убрать этот ахтунг
ГОД(ТиповойДвиженияССубконто.Период) = &Период) Заменить на что-то такое ТиповойДвиженияССубконто.Период>= &ДатаНач И ТиповойДвиженияССубконто.Период< &ДатаКон 2. Юзать параметры вирт таблицы 3. непонятна бессмысленная левая связь с операцияБух. 4. Не использовать таблицу Движения с субконто вообще. ОборотыДтКт вместо этого подойдет |
|||
17
тарам пам пам
26.02.15
✎
17:11
|
(0) лучше напиши, что ты этим запросом получить хотел - тогда тебе напишут, где ты дурак и как надо было правильно сделать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |