|
Есть ли куда оптимизировать запрос? 🠗Ø (Волшебник 14.04.2017 12:48) | ☑ | ||
---|---|---|---|---|
0
MetalZOne
14.04.17
✎
10:46
|
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыОстатки.Документ, | ВзаиморасчетыОстатки.СуммаОстаток, | ВзаиморасчетыОстатки.Партнер, | ВзаиморасчетыОстатки.Документ.Дата КАК ДокументДата |ИЗ | РегистрНакопления.Взаиморасчеты.Остатки( | &Дата, | Партнер = &Партнер | И Документ <> &Пуст) КАК ВзаиморасчетыОстатки | |УПОРЯДОЧИТЬ ПО | ДокументДата"; Запрос.УстановитьПараметр("Дата", Док.Ссылка.МоментВремени()); Запрос.УстановитьПараметр("Пуст", Неопределено); Запрос.УстановитьПараметр("Партнер",Док.Партнер); Есть ли куда оптимизивать запрос? Если есть то как?) |
|||
1
ptiz
14.04.17
✎
10:47
|
(0) Долго работает?
|
|||
2
MetalZOne
14.04.17
✎
10:50
|
(1) Сам запрос нет, но он у меня в цикле (делается закрытие доков по фифо). Так вот выбираются записи в три раза дольше чем записываются через НаборЗаписей.
|
|||
3
vi0
14.04.17
✎
10:53
|
напиши измерения регистра с порядком как в базе
|
|||
4
mkalimulin
14.04.17
✎
10:53
|
(2) Вот и вынеси его наверх и будет тебе оптимизация.
|
|||
5
MetalZOne
14.04.17
✎
10:55
|
Измерения
--Документ (индексировать, тип составной) --Партнер (не индексировать, тип справочник) Ресурсы --Сумма |
|||
6
MetalZOne
14.04.17
✎
10:57
|
(4) Это ж документы, которые закрываются по ФИФО, как я его вынесу, у меня голова лопнет...
|
|||
7
mkalimulin
14.04.17
✎
10:59
|
(6) От дерева с одним уровнем еще ни у кого не лопнула.
|
|||
8
DailyLookingOnA Sunse
14.04.17
✎
10:59
|
(6)
Если &Дата в цикле всегда одинаковое значение, то нужно выносить из цикла. |
|||
9
brznzglwgn
14.04.17
✎
11:00
|
Как минимум можно оптимизировать в параметрах обращения через точку -
Док.Ссылка. Док.Партнер |
|||
10
mkalimulin
14.04.17
✎
11:00
|
(7) т.е. с двумя. Опять от нуля подсчитал))
|
|||
11
b_ru
14.04.17
✎
11:01
|
Просто проверь, не будет ли быстрее если отбор по партнеру и документу убрать из параметров. Учитывая, что результат джоина линкуется с таблицей документов (Документ.Дата) почти наверняка будет.
|
|||
12
MetalZOne
14.04.17
✎
11:01
|
(8) Разное, в зависимости от документа. Я их массово перепровожу. 85000 доков -два дня перепроводятся. Нужно чтоб в ночь укладывались
|
|||
13
vi0
14.04.17
✎
11:05
|
(5) плохо для оптимальности что документ у тебя первым измерением и ты отбираешь по неравенству - индекс скорее всего не будет использоваться в сочетании с условием по партнеру
|
|||
14
Sammo
14.04.17
✎
11:07
|
ВзаиморасчетыОстатки.Документ.Дата - там документы одного вида? Иначе вызывается неявное левое со всеми типами.
Если массовая обработка, как вариант - убрать цикл и сделать временной табличкой собирать нужные документы, после этого считать |
|||
15
Lys
14.04.17
✎
11:07
|
ВзаиморасчетыОстатки.Документ.Дата - если Документ составного типа, то будет тормозить из-за неявных соединений.
Порядок измерений вызывает сомнения. Кажется, в практике чаще нужны остатки расчетов с выбранным партнером по всем документам, чем наоборот. Здесь, кстати, пример подтверждает это. Отбор по непустому документу - тоже странный. Кажется следствием плохо продуманной архитектуры. Здесь лучше изменить логику конфы, чтобы не было в регистре пустых документов. Если невозможно - то отсекать остатки с пустыми документами при постобработке. |
|||
16
MetalZOne
14.04.17
✎
11:09
|
Вот скрин проблемы http://savepic.ru/13524575.png
(15) Пустой документ получается когда идет предоплата, в этот момент еще не ясно какой док. отгрузки закрывать |
|||
17
MetalZOne
14.04.17
✎
11:11
|
(14) тип составной
|
|||
18
DrShad
14.04.17
✎
11:11
|
сделай уже ФИФО прямо в запросе
|
|||
19
Вафель
14.04.17
✎
11:13
|
(5) поменяй местами партнер и документ
|
|||
20
Вафель
14.04.17
✎
11:14
|
(16) 0.74% - это проблема????
|
|||
21
MetalZOne
14.04.17
✎
11:15
|
(20) да, в итоге две секунды на документ
|
|||
22
Вафель
14.04.17
✎
11:16
|
(21) а больше всего что занимает?
|
|||
23
Вафель
14.04.17
✎
11:17
|
или 0.74% = 2с, тогда 100% = 250с?
У вас документ проводится 250 секунд? |
|||
24
DailyLookingOnA Sunse
14.04.17
✎
11:20
|
И зачем документ перепроводить?
Если меняется только один регистр, только набор записей этого регистра и нужно перезаписать. |
|||
25
MetalZOne
14.04.17
✎
11:22
|
(24) так и делаю
|
|||
26
АнализДанных
14.04.17
✎
11:24
|
(0) Пересчёт итогов делал?
|
|||
27
arsik
гуру
14.04.17
✎
11:24
|
(25) Считай фифо сразу в запросе. Вот тут методика описана
http://catalog.mista.ru/public/68225/ |
|||
28
MetalZOne
14.04.17
✎
11:30
|
(27) да это не обычное фифо, у меня есть приход денег в момент, когда еще нечего закрывать (преоплата), потом отгрузки сами себя по фифо закрывают
|
|||
29
MetalZOne
14.04.17
✎
11:48
|
Вопрос снят, основное время затрачивалось на вызов сервера для отображение состояния выполнения:
Состояние("Проводим "+Стр.Док+"",(тек*100)/всего,"Номер док "+тек+""); Теперь 0,10 сек. на документ |
|||
30
X Leshiy
14.04.17
✎
12:09
|
(29) Оборжаться :)
|
|||
31
Aleksandr N
14.04.17
✎
12:36
|
(29) Наберут на работу невменяемых любителей писать запросы в цикле, а потом ноют, что у них все плохо.
|
|||
32
lodger
14.04.17
✎
12:46
|
(31) заметьте, он запрос из цикла так и не убрал...
|
|||
33
Вафель
14.04.17
✎
12:46
|
(32) а зачем, если на 1 документ - 1 запрос
|
|||
34
Волшебник
модератор
14.04.17
✎
12:48
|
да уж...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |