Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Очень долго выполняется запрос

Очень долго выполняется запрос
Я
   Kalina
 
27.02.20 - 11:27
Здравствуйте 1с КА 1.1 она же УПП
вроде обычный запрос, Регистр Сведений НетДокументов - самодельный регистр - бухи помечают в нем есть у них бумажные документы или нет, 1 Измерение - Документ, 1 Ресурс - Булево (есть или нет), 6 Реквизитов - Контрагент, Сумма, Ответственный и т.д.
база файловая, но это не отмазка - припроведении используется куча регистров, а тормозит тока на этом
вызывается из Подписки На События - ПриЗаписи
    Запрос.Текст ="ВЫБРАТЬ РАЗРЕШЕННЫЕ
                  |    НетДокументов.Документ.Ссылка КАК Док
                  |ИЗ
                  |    РегистрСведений.НетДокументов КАК НетДокументов
                  |ГДЕ
                  |    НетДокументов.Документ.Ссылка = &Документ";
Буду признателен за подробный, разжеваный ответ :)
С Уважением Kalina
   butterbean
 
1 - 27.02.20 - 11:28
для начала - убрать Документ.Ссылка, оставить просто Документ
   fisher
 
2 - 27.02.20 - 11:31
(1) +1
И на всякий случай проверить наличие RLS по этому регистру.
   butterbean
 
3 - 27.02.20 - 11:32
(1)+ понять зачем вообще этот запрос и что он делает - в примере фигня, т.к. он просто выдает одну ссылку на передаваемый в качестве параметра документ
   fisher
 
4 - 27.02.20 - 11:34
(0) НетДокументов.Документ.Ссылка - приводит к неявному соединению с таблицей документов. А так как вангую, что это измерение составного типа, то приводит к неявному соединению со ВСЕМИ таблицами регистраторов.
   Kalina
 
5 - 27.02.20 - 11:36
(3) Запрос проверяет - есть ли запись про этот документ, если запись есть, то делает ничего
если нет - создает запись
если Док помечают на удаление - удаляет запись из Регистра
(4)  ну да (Поступление и Реализация) и что делать ?
   fisher
 
6 - 27.02.20 - 11:37
(5) Тебе же сказали уже. Чукча писатель?
    Запрос.Текст ="ВЫБРАТЬ РАЗРЕШЕННЫЕ
                  |    НетДокументов.Документ КАК Док
                  |ИЗ
                  |    РегистрСведений.НетДокументов КАК НетДокументов
                  |ГДЕ
                  |    НетДокументов.Документ = &Документ";
   Timon1405
 
7 - 27.02.20 - 11:38
читать (1) до просветления
   novichok79
 
8 - 27.02.20 - 11:39
план запроса в студию ёпт
   Kalina
 
9 - 27.02.20 - 11:41
(6) сам чукча, ведм себя себя прилично
   novichok79
 
10 - 27.02.20 - 11:42
RLS + убрать ссылку + план запроса.
что тут думать то
   fisher
 
11 - 27.02.20 - 11:44
(9) Чукча - это описание состояния. Иногда бываю и я, да. Если оскорбил - извиняюсь.
   Kalina
 
12 - 27.02.20 - 11:51
(6) Ссылку убрал - ругается на условие  
|    НетДокументов.Документ = &Документ";
тип поля в РС.Документ - ссылка - в параметре &Документ тада тоже ведь ссылку надо ставить ?
   palsergeich
 
13 - 27.02.20 - 11:54
(12) ага
   fisher
 
14 - 27.02.20 - 11:56
(12) Так и до этого надо было ссылку ставить. Не понимаю, почему у тебя раньше не ругалось, а тут вдруг начало.
   ДенисЧ
 
15 - 27.02.20 - 11:56
(12) А ты что ставил? О_о
   Kalina
 
16 - 27.02.20 - 11:56
Запрос.УстановитьПараметр("Документ", Документ.Ссылка);
    Запрос.Текст ="ВЫБРАТЬ РАЗРЕШЕННЫЕ
                  |    НетДокументов.Документ КАК Док
                  |ИЗ
                  |    РегистрСведений.НетДокументов КАК НетДокументов
                  |ГДЕ
                  |    НетДокументов.Документ = &Документ";

вот так стал работать раза в 2 быстрее
спасибо друзья
мож еще что можно сделать для разгона ? :)
   unenu
 
17 - 27.02.20 - 11:58
самое лучшее закрыть тему и не позориться
   fisher
 
18 - 27.02.20 - 12:00
(16) Ну, оптимизировать уже дальше некуда. Проверь наличие RLS и если их нет - только комп мощнее или регистр почистить, ежели так разбух, что даже индекс не шибко спасает.
   Галахад
 
19 - 27.02.20 - 12:00
А медленно это сколько? В цифрах.
   Йохохо
 
20 - 27.02.20 - 12:02
(16) передать в привилегированный модуль и выкинуть разрешенные
или регистр переименовать в НетРазрешенныхДокументов, а то суть не отражает
   Kalina
 
21 - 27.02.20 - 12:05
(19) 52 Документа 10-15 строк 80 сек ГрупповойОбработкойСпраовчниковДокументов
до этого было раза в 2 дольще
   Галахад
 
22 - 27.02.20 - 12:09
(21) Гм. Запрос сколько выполняется?
   FIXXXL
 
23 - 27.02.20 - 12:10
Я бы выкинул запрос. Ибо "сначала проверяем, потом пишем".
Создавай НаборЗаписей, Прочитать(), если пустой Добавить()-Записать(), не пустой - ничего не делать
   fisher
 
24 - 27.02.20 - 12:16
(21) Зуб даю, что теперь у тебя узкое место не этот запрос. Сделай замер производительности.
   dmpl
 
25 - 27.02.20 - 12:21
(16) Убрать запрос из цикла, и информацию по всем документам получать одним запросом.
   Kalina
 
26 - 27.02.20 - 12:22
(22) если ты об этом
ОбщийМодуль.МоиДоработки.Модуль    224    Запись = Запрос.Выполнить().Выбрать();    1    0,001916    0,33

(24) да, стало гораздо лучше
спасибо
но непойму почему, ведь Ссылку выбрать гораздо легче чем документ ?
она уже хранится в Регистре (НетДокументов.Документ - тип знач - Ссылка)
и в Условии ведь тоже ссылка используется ?
   dezss
 
27 - 27.02.20 - 12:29
(26) Потому что поле Документ в таблице этого регистра хранится, а поле Ссылка хранится в другой таблице, даже в 2-х, поэтому обращение через 2-ю точку делает неявное левое соединение с теми таблицами.
А вообще, на мой взгляд, (23) дело говорит.
   hhhh
 
28 - 27.02.20 - 12:29
(26) где  в условии ссылка?
   fisher
 
29 - 27.02.20 - 12:30
(26) А почему запрос выполняется 224 раза на 52 документа? Но все равно суммарное общее время - треть секунды.
Там уже и так ссылка. А любое обращение в запросе через точку от ссылки трактуется уже как обращение к связанной таблице-источнику. В результате вместо того, чтобы просто проверить та или не та ссылка в регистре, платформа сначала "цепляет" к регистру таблицы всех источников и уже в них ищет на совпадение ссылки как ключевого поля в этой таблице.
   Курцвейл
 
30 - 27.02.20 - 12:34
(29) Это номер строки в обработке
 
 Рекламное место пустует
   Kalina
 
31 - 27.02.20 - 12:36
(28)вот  Запрос.УстановитьПараметр("Документ", Документ.Ссылка);
     |    НетДокументов.Документ = &Документ"; 
(29) номер строки
   fisher
 
32 - 27.02.20 - 12:38
Хм... А что такое тогда 0,001916 и 0,33?
   mzelensky
 
33 - 27.02.20 - 12:38
А еще вопрсо по структуре регистра. Какие Измерения у него, в каком порядке расположены, есть ли индексирование полей ?
   goodprog
 
34 - 27.02.20 - 12:39
(29) очень похоже на запрос в цикле) Доков всего 224, 52 из них без документов
   Kalina
 
35 - 27.02.20 - 12:42
(29) Спасибо, кажется начинаю просветляться :)
(34) нет - вызывается один раз при записи документа - просто на групповой обработке удобнее отлаживать, да и проблема возникает тока при например восстановлении последовательности
когда перепроводится одновременно много документов, я даже не сразу увидел эту проблему
   fisher
 
36 - 27.02.20 - 12:43
(32) +
По-моему, если не путаю, тогда одна из этих цифр - абсолютное время выполнения, а вторая - доля в общем времени выполнения. В общем, как ни трактуй, а дело уже не в этом запросе :


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