Имя: Пароль:
1C
1С v8
1сек в 7минут: ВЫРАЗИТЬ(МойРегСв.ЛюбаяСсылкаТут.Организация КАК Справочник.Организации)
0 bolobol
 
16.09.19
12:38
День добрый!

Делюсь впечатлениями.

Односекундный запрос превращается в семиминутный одной, казалось бы, оптимизирующей его строкой:

ВЫРАЗИТЬ(МойРегСв.ЛюбаяСсылкаТут.Организация КАК Справочник.Организации)

Да как так-то???
1 sqr4
 
16.09.19
12:39
(0) ага изо всех щелей так оптимизация и прет, ЛюбаяСсылкаТут - как я это дохера различных документов
2 bolobol
 
16.09.19
12:41
(1) Результат запроса кодом обрабатывается за туже одну секунду, если не догадался
3 Nuobu
 
16.09.19
12:42
(2) Потому что тип известен.
4 sqr4
 
16.09.19
12:42
(2) причем тут обработка результата запроса и использование поля множественного типа да еще и выборка из него через точку. Построй план запроса и увидишь эту тучу соединений
5 Провинциальный 1сник
 
16.09.19
12:46
ВЫРАЗИТЬ надо МойРегСв.ЛюбаяСсылкаТут., а не то что после точки идёт. У тебя по сути никакой оптимизации, происходит обращение через точку(неявное соединение) к реквизиту составного типа, то есть идет джойн со всем чем только можно.
6 bolobol
 
16.09.19
12:47
(4) Так ты подумай! И расскажи, что там с соединениями не так, и чем это отличается от построчной обработки результата запроса без выборки Организации, а выбором её кодом языка - это 355 запросов друг за другом. Запросы в цикле слышал?
7 bolobol
 
16.09.19
12:48
(5) Логично, да. Выразить - индексация требует, но не суть.
8 Вафель
 
16.09.19
12:49
те запрос
МойРегСв.ЛюбаяСсылкаТут.Организация
за 1 сек отрабатывает?
9 bolobol
 
16.09.19
12:49
(8) Нет, только МойРегСв.ЛюбаяСсылкаТут
10 bolobol
 
16.09.19
12:50
(8) + Цикл Выборка.ЛюбаяСсылкаТут.Организация - на весь результат запроса (355 строк)
11 Вафель
 
16.09.19
12:50
(9) те выборку через точку от любой ссылки ты называешь оптимизацией?
12 palsergeich
 
16.09.19
12:51
Ты весь текст запроса давай, а то окажется что дело не в выразить
13 Nuobu
 
16.09.19
12:51
(6) Ещё раз - у тебя в запросе тип "ЛюбояСсылка" - не известен, какой будет. И оптимизатор джойнит все таблицы, которые там могут быть. При чем даже те, которые не содержат реквизит "Организация".
Из-за этого время и растет.
А когда исполняется код, то он делает селект на одну таблицу и получает реквизит "Организация".

Чтобы этого не было - сам присоедини нужную таблицу и бери Оргиназцию оттуда, а не из реквизита.
14 bolobol
 
16.09.19
12:53
(12) Там больше ничего нет, только поля МойРегСв

(13) Вот почему "на одну", если поле составное в результате? В запросе 100+ соединений самому рисовать, что ли?
15 kolts23381
 
16.09.19
12:54
А что реквизит "Организация" регистра сведений может быть не равен справочнику "Ораганизации"?
16 kolts23381
 
16.09.19
12:54
В смысле тип реквизита
17 Nuobu
 
16.09.19
12:54
(14) Агась.
18 bolobol
 
16.09.19
12:55
Да тоже не понятно... всё равно будет 100+ соединений, хоть вручную выражаю любую ссылку на каждый содержащий Организацию тип...
19 palsergeich
 
16.09.19
12:55
(14) ты текст запроса то дай
20 Вафель
 
16.09.19
12:56
(18) вот ты и дошел, что 1 большой запрос не всегда быстрее чем много мелких
21 Вафель
 
16.09.19
12:56
Оптимищация - это исскуство
22 bolobol
 
16.09.19
12:57
(15) Конструктор ругается там, если нет Выразить и есть Индексировать, т.к. реквизит выбирается из всего что только можно, значит может получиться любой результат и NULL может быть
23 sqr4
 
16.09.19
12:57
(18) ага, полюбому.
24 sqr4
 
16.09.19
12:58
Как я понимаю всю красоту твоего запроса ты нам не покажешь, только кусочную оптимизацию?
25 bolobol
 
16.09.19
12:59
Хотелось-то без кода обойтись, а то выбрал, выгрузил, заполнил, в запрос обратно загрузил... красиво, конечно, кратко потому что, но дичь какая-то
26 bolobol
 
16.09.19
13:00
(24) Из красоты - там лишь эта строка. Остальное МойРегСв.*
27 unenu
 
16.09.19
13:11
(26) у некоторых понятие красоты может быть отлично от вашего - явите миру свою Запросю
28 bolobol
 
16.09.19
13:16
(27) Читать (26) до просветления
29 ptiz
 
16.09.19
13:21
(0) Покажи полный текст до и после.
30 polosov
 
16.09.19
13:27
В (5) уже все сказано правильно. В (0) чушь слоновья, а не оптимизация.
31 unenu
 
16.09.19
13:38
(30) да, именно так. жаль, что автор не выложил нетленку на мир, можно было бы еще попинать запрос.
32 ASU_Diamond
 
16.09.19
13:46
(29) до "оптимизации":
ВЫБРАТЬ
    МойРегСв.*
    МойРегСв.ЛюбаяСсылкаТут
ИЗ
    РегистрСведений.МойРегСв КАК МойРегСв

после
ВЫБРАТЬ
    МойРегСв.*
    ВЫРАЗИТЬ(МойРегСв.ЛюбаяСсылкаТут.Организация КАК Справочник.Организации) КАК Организация
ИЗ
    РегистрСведений.МойРегСв КАК МойРегСв

вроде так, судя по постам ТС
33 polosov
 
16.09.19
13:55
Правильно должно быть

ВЫБРАТЬ
    МойРегСв.*
    ВЫРАЗИТЬ(МойРегСв.ЛюбаяСсылкаТут КАК ТипНужнойТаблицы).Организация  КАК Организация
ИЗ
    РегистрСведений.МойРегСв КАК МойРегСв

Если типов таблиц несколько, то делаем объединением.
34 bolobol
 
16.09.19
13:58
(31) Всё что за секунду выполняется - нет смысла даже пинать, сколь бы неоптимально, избыточно или неправильно писано - только время тратить.

(33) Вот это, как раз, пример "чуши слоновьей". Завтра добавится новый тип данных - переписывать будете?
35 ASU_Diamond
 
16.09.19
13:59
(34) собирай текст запроса программно
36 sqr4
 
16.09.19
14:09
(34) Это тебе не фузина https://its.1c.ru/db/metod8dev#content:5842:hdoc
"Получение данных через точку от полей составного типа", кури пока легкие не почернеют
37 polosov
 
16.09.19
14:11
(34) Либо переписывать либо (35)
38 bolobol
 
16.09.19
14:17
(35) Слишком много текста. Не люблю я это))
Изменение запроса может затронуть точку входа модификации программной части и... короче - много думать там надо. В моей задаче - избыточно много думать над обработкой 355 строк.
В общем - запросы в цикле - наше всё! )))))))))))))))
39 Cyberhawk
 
16.09.19
14:18
А где односекундный запрос?
40 sqr4
 
16.09.19
14:19
(34) все что выполняется сегодня за секунду сегодня, завтра будете висеть часами.
Исче один серийный программист.
41 Cyberhawk
 
16.09.19
14:22
(40) А может стартап загнется и тогда секунда превратится в ноль)
Преждевременная оптимизация далеко не всегда оправданна, хотя перфекционисту с этим свыкнуться и тяжело бывает
42 sqr4
 
16.09.19
14:23
(41) Как минимум стыдно перед коллегами, такое чудо "оптимизации" показывать.
43 ASU_Diamond
 
16.09.19
14:24
(42) а он напишет что код не оптимизирован, "надо будет потом доделать" :)
44 bolobol
 
16.09.19
14:25
Да-ДА-да! Ещё и напишу КАК именно доделать и отдам в работу)))))
45 Cyberhawk
 
16.09.19
14:26
(42) Может у него тип организации может принимать разные значения, вот и выражает его)
46 bolobol
 
16.09.19
14:26
Если, как правильно было выше сказано, "стартап не загнётся". А то десятки обработок/очётов "очень нужных и важных" так и валяются грузом бесполезным
47 ам794123
 
16.09.19
14:28
да он обыкновенный балабол, как вы сразу не догадались