Имя: Пароль:
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С сервера, но вы его дополнительно нагружаете новыми соединениями
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.