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


1С:Предприятие :: 1С:Предприятие 8 общая

Долго выполняется простой запрос

Долго выполняется простой запрос
Я
   Eastert
 
09.04.18 - 14:20
В УТ 11.1 минут 5 выполняется вот такой простой запрос к регистру накопления
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
    Запрос.УстановитьПараметр("ВидДвижения",  ВидДвиженияНакопления.Приход);

    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
                    |    СебестоимостьТоваров.Период,
                    |    СебестоимостьТоваров.Количество,
                    |    СебестоимостьТоваров.Стоимость
                    |ИЗ
                    |    РегистрНакопления.СебестоимостьТоваров КАК СебестоимостьТоваров
                    |ГДЕ
                    |    СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура
                    |    И СебестоимостьТоваров.ВидДвижения = &ВидДвижения
                    |
                    |УПОРЯДОЧИТЬ ПО
                    |    СебестоимостьТоваров.Период УБЫВ";

    РезультатСебестоимость = Запрос.Выполнить().Выгрузить();
 
 
   Малыш Джон
 
1 - 09.04.18 - 14:21
А "простой" и не значит ведь "быстрый"
   Redkiy
 
2 - 09.04.18 - 14:23
За запрос к физической таблице РН на руки отрубать. По локоть.
   VS-1976
 
3 - 09.04.18 - 14:23
Соединение всего РегистрНакопления.СебестоимостьТоваров с номенклатурой, потом фильтрация и сортировка...
PS: Руки долой
   systemstopper
 
4 - 09.04.18 - 14:24
(2) дооо, конечно-конечно...бред не несите
   Eastert
 
5 - 09.04.18 - 14:24
Как надо? примерно на словах скажите
   VS-1976
 
6 - 09.04.18 - 14:24
(2) Дело не в физической таблице
   unregistered
 
7 - 09.04.18 - 14:25
(2) Голову включи, прежде чем руки рудить.
Если автору нужен Период, то какой ему смысл делать запрос к виртуальной таблице с Периодичностью Запись? Какой прирост это даст?
   Джинн
 
8 - 09.04.18 - 14:26
(7) Да не факт, что ему период как раз и нужен.
   VS-1976
 
9 - 09.04.18 - 14:27
(5) Нужно найти все значения из справочника АналитикаУчетаНоменклатуры с присутствием данной номенклатуры
 = &Номенклатура
Далее соединить результат с РегистрНакопления.СебестоимостьТоваров
ПО СебестоимостьТоваров.АналитикаУчетаНоменклатуры = втАналитикаУчетаНоменклатуры.Ссылка
И СебестоимостьТоваров.ВидДвижения = &ВидДвижения
   Eastert
 
10 - 09.04.18 - 14:27
Все я понял, выполняется быстро если это  

    СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура

заменить на это

    СебестоимостьТоваров.АналитикаУчетаНоменклатуры = &АналитикаУчетаНоменклатуры
 
 Рекламное место пустует
   systemstopper
 
11 - 09.04.18 - 14:27
(0) Чуваг без плана запроса и стоимости его операторов говорить не о чем. Вангую что у тебя основные тормоза идут на сортировке, ну и обращение через точку СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура вызывает соедиение с кучей таблиц
   Eastert
 
12 - 09.04.18 - 14:27
(10) Хотя для этого надо и аналитику получать, но думаю всяко быстрее чем первые запрос
   Малыш Джон
 
13 - 09.04.18 - 14:27
(5) 1) обращайся к виртуальной таблице, а не к самомУ РН. судя по "СебестоимостьТоваров.ВидДвижения = &ВидДвижения" тебе подойдут Обороты
2) накладывай условия в параметрах виртуальной таблицы, а не в условиях запроса
3) избавься от "АналитикаУчетаНоменклатуры.Номенклатура".
   Borteg
 
14 - 09.04.18 - 14:27
(0) Заменить  СебестоимостьТоваров.АналитикаУчетаНоменклатуры.Номенклатура = &Номенклатура
На сначала поиск аналитики , а потом поиск по этой аналитики.
   Borteg
 
15 - 09.04.18 - 14:28
(10) в правильную сторону смотришь)
   unregistered
 
16 - 09.04.18 - 14:30
(8) >> не факт, что ему период как раз и нужен.

Конечно не факт.
Но он по нему еще и сортирует потом. Думаешь просто так?
   Джинн
 
17 - 09.04.18 - 14:32
(16) Да все возможно. Я бы на всякий случай уточнил этот момент.
   Eastert
 
18 - 09.04.18 - 14:34
(17) Период нужен
   Eastert
 
19 - 09.04.18 - 14:34
Но я уже разобрался, всем спасибо
   Eastert
 
20 - 09.04.18 - 14:34
(18) Но я уже разобрался, всем спасибо
   Мыш
 
21 - 09.04.18 - 14:39
Внутреннее соединение с регистром АналитикаУчетаНоменклатуры
   VS-1976
 
22 - 09.04.18 - 14:41
(21) Малыш проф не пригоден :)
   Вафель
 
23 - 09.04.18 - 14:46
Может по периоду отбор все-таки нужен?
   rs_trade
 
24 - 09.04.18 - 14:50
(2) Можно узнать почему?
   Вафель
 
25 - 09.04.18 - 14:52
(24) Его так в детстве учили. А по другому он не знает
   Мыш
 
26 - 09.04.18 - 14:56
(22) Это о чём?
   Быдло замкадное
 
27 - 09.04.18 - 15:06
Вот так 1С делает аналитики что бы повысить производительность, а по факту программисты ее понижают.
Ведь будь Измерение Номенклатура вопросов у автора не возникло бы.
   Мыш
 
28 - 09.04.18 - 15:12
(27) Так есть измерение. Только в другом регистре. И сделано там специально для производительности.
   ildary
 
29 - 09.04.18 - 15:12
(27) Виновата ли 1С, что программисты не поняли замысла с аналитикой?
   Мыш
 
30 - 09.04.18 - 15:16
(29) 1С виновата в отсутствии документации к программным интерфейсам. Разжевать и принести на блюдечке с каемочкой.
   VS-1976
 
31 - 09.04.18 - 15:20
(26) Внутреннее соединение с регистром АналитикаУчетаНоменклатуры

Если РегистрНакопления.СебестоимостьТоваров

Внутреннее соединение с регистром АналитикаУчетаНоменклатуры

То кол ( 1 )

Если регистр АналитикаУчетаНоменклатуры

Внутреннее соединение РегистрНакопления.СебестоимостьТоваров

То 2 :)
   Мыш
 
32 - 09.04.18 - 15:46
(31) Ошибка у вас.
   VS-1976
 
33 - 09.04.18 - 16:05
(32) Зачем лишнее соединение вообще? (10) давно он сам дал ответ что ему нужно
 
 
   Вафель
 
34 - 09.04.18 - 16:07
(30) 1с  виновата в том, что не может составные индексы и поэтому городит велосипеды из регистров сведений
   Мыш
 
35 - 09.04.18 - 16:17
(33) Соединение для ускорения отбора по ключу аналитики. Типовой механизм последних конфигураций.
   toypaul
 
36 - 09.04.18 - 16:17
нифига запрос непростой. потому что условие не попадает в индекс. если бы попадало, тогда да
   Мыш
 
37 - 09.04.18 - 16:18
(36) Регистр сведений проиндексирован. Условие попадает в индекс.
   toypaul
 
38 - 09.04.18 - 16:22
ну видимо СКЛ так не считает коли запрос 5 мин выполняется
   Мыш
 
39 - 09.04.18 - 16:24
(38) В его варианте - да, 5 минут. Я же предложил типовой механизм, который значительно быстрее.
   youalex
 
40 - 09.04.18 - 16:26
(38) потому что .АналитикаУчетаНоменклатуры.Номенклатура - неявное соединение со справочником, а не с регистром. А в регистре ресурс Аналитика - проиндексирован.
Собственно, о чём писали в (34)


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