Вход | Регистрация


1С:Предприятие ::

Метки: 

Есть ли куда оптимизировать запрос?

Ø [Волшебник, 14.04.17 - 12:48]
Я
   MetalZOne
 
14.04.17 - 10:46
Запрос = Новый Запрос();
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    ВзаиморасчетыОстатки.Документ,
    |    ВзаиморасчетыОстатки.СуммаОстаток,
    |    ВзаиморасчетыОстатки.Партнер,
    |    ВзаиморасчетыОстатки.Документ.Дата КАК ДокументДата
    |ИЗ
    |    РегистрНакопления.Взаиморасчеты.Остатки(
    |            &Дата,
    |            Партнер = &Партнер
    |                И Документ <> &Пуст) КАК ВзаиморасчетыОстатки
    |
    |УПОРЯДОЧИТЬ ПО
    |    ДокументДата";
    Запрос.УстановитьПараметр("Дата", Док.Ссылка.МоментВремени());
    Запрос.УстановитьПараметр("Пуст", Неопределено);
    Запрос.УстановитьПараметр("Партнер",Док.Партнер);

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



Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует