Имя: Пароль:
1C
 
Составной тип данных - Выразить в 10 раз увеличил время запроса
0 pumba055
 
04.02.22
19:42
Коллеги!
Вот странность в запросе в соединении было написано --> ДанныеПоЗаказу.Контрагент = ТелефонКонтрагента.Объект где ТелефонКонтрагента.Объект - составной тип
Исправили на ДанныеПоЗаказу.Контрагент = ВЫРАЗИТЬ(ТелефонКонтрагента.Объект КАК Справочник.Контрагенты) запрос стал в 10 раз дольше работать, раньше работал 1-2 сек, а с Выразить 10 сек... Вопрос к знатокам...
1 pumba055
 
04.02.22
19:46
тема снимается
2 Garykom
 
гуру
04.02.22
20:46
было бы неплохо если кто составил или привел ссылку на сборник правил и рекомендаций по написанию запросов
с разными веселыми тонкостями

пока все очень разрозненно и отрывочно или малодоступно типа итс
3 ДедМорроз
 
05.02.22
18:01
Скорей всего,поле было индексированное,а вы приведением тира поломали индекс и запрос выполнялся или соединением упорядоченных таблиц с дополнительным упорядочиванием (если mssql это поймет)или полным сканированием меньшей таблицы для каждой строки большей,если postgres.

Приведение нужно только тогда,когда выполняется соединение с таблицами,то есть прт получении дочернего значения поля через точку,в остальных случаях,составной тип ничем не опасен.
4 mszsuz
 
05.02.22
18:55
pumba055, как решили?
5 cw014
 
05.02.22
18:58
На самом деле тут составное значение справа. Потому вы дважды его конвертируете (проверяете - там добавляются поля условия в SQL)
Если бы составное поле было слева - тогда ВЫРАЗИТЬ могло дать производительность. В вашем же случае это уже происходит процессом 1С сервера, но вы его дополнительно нагружаете новыми соединениями
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший