|
Какое условие соединения быстрее
Domovoi, Скучный бух, John D, H A D G E H O G s, Гость из Мариуполя, Spyke, RomanYS, DM36, bmitkin, Bigbro, sxfoxi, MaxxiMiliSanM, vis, Tatitutu, ИУБиПовиц, ejikbeznojek, Ильф, Злопчинский, Zamestas, Krendel, vicof, Мультук, sansys, Wern, Lexey_, МаленькийВопросик, mdao, Lama12, Dmitrii, alexxx961503, Шурик71, craxx, denk32, ProxyInspector, nshrek, Прохожий, Многолетний Апельсин, Amra, okmail, arsik, ОператорПК, ЯнСмит, banco, Chameleon1980
| ☑ |
0
Прохожий
19.10.25
✎
15:21
|
По замерам вроде не особо разница
|
|
1
Прохожий
19.10.25
✎
15:22
|
| РегистрНакопления.Продажи.Обороты(
| ,
| ,
| Регистратор,
| ДокументПродажи В
| (ВЫБРАТЬ
| Реализации.Реализация
| ИЗ
| ВТ_Реализации КАК Реализации)) КАК ПродажиОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Реализации КАК Реализации
| ПО (ВЫБОР
| КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА Реализации.Реализация = (ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг))
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ)
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Реализации КАК Возврат
| ПО (ВЫБОР
| КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
| ТОГДА Возврат.Реализация = (ВЫРАЗИТЬ(ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.ВозвратТоваровОтПокупателя).ДокументОснование КАК Документ.РеализацияТоваровУслуг))
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ)
|
|
2
Прохожий
19.10.25
✎
15:22
|
| РегистрНакопления.Продажи.Обороты(
| ,
| ,
| Регистратор,
| ДокументПродажи В
| (ВЫБРАТЬ
| Реализации.Реализация
| ИЗ
| ВТ_Реализации КАК Реализации)) КАК ПродажиОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Реализации КАК Реализации
| ПО (Реализации.Реализация = (ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг)))
| ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Реализации КАК Возврат
| ПО (Возврат.Реализация = (ВЫРАЗИТЬ(ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.ВозвратТоваровОтПокупателя).ДокументОснование КАК Документ.РеализацияТоваровУслуг)))
|
|
3
Прохожий
19.10.25
✎
15:23
|
Есть смысл через Выбор проверять регистратор и дальше не лезть?
|
|
4
Волшебник
19.10.25
✎
15:37
|
Может сделаете замер производительности?
|
|
5
maxab72
19.10.25
✎
15:59
|
(0) Надо смотреть на тот запрос, что сформирует SQL. А это зависит не только от текста самого запроса.
|
|
6
Прохожий
19.10.25
✎
15:59
|
Сделал. Разницы практически нет.
|
|
7
Прохожий
19.10.25
✎
16:01
|
(5) Тогда выберу второй. Он классичнее. Просто сама идея первого до конца не понятна. Вот возвратов же меньше гораздо. Дешевле проверить на ссылку или соединить с двумя таблицами регистратор?
|
|
8
maxab72
19.10.25
✎
16:24
|
(7) вполне возможно, что SQL для этих двух вариантов сгенерил два идентичных конечных запроса к базе. и поэтому, действительно, лучше остановиться на запросе с более прозрачной структурой (самому же потом в него придется когда-нибудь лезть).
|
|
9
Wern
19.10.25
✎
16:30
|
Вот это
"(ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг))"
тоже можно убрать до
"ПродажиОбороты.Регистратор"
и
"ВЫРАЗИТЬ(ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.ВозвратТоваровОтПокупателя).ДокументОснование КАК Документ.РеализацияТоваровУслуг)))"
преврати в
"ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.ВозвратТоваровОтПокупателя).ДокументОснование)"
ВЫРАЗИТЬ надо чтоб исключить обращение к лишним таблицам, а тут идет обращение только к УИД который записан в самом реквизите никакого обращения к таблицам не идет потому ВЫРАЗИТЬ не нужно оно ничего не делает. А вот при обращении к ".ДокументОснование" ВЫРАЗИТЬ нужно.
Потому и эти условия ВЫБОР тоже почти ничего не делают. Мы обращаемся к тому что лежит в поле Регистратор, тип в этом поле тоже есть, потому в первом запросе будут 2 проверки первая на тип вторая на УИД, во втором только одна на УИД. Теоретически второй случай быстрее, но разница совсем минимальная. Никак лишних соединений тут нет ни в первом, ни во втором случае.
|
|
10
Dmitrii
гуру
19.10.25
✎
16:44
|
(1) Зачем такие сложные конструкции?
Замени ВЫБОР на обычное условие.
Вместо
|ПО (ВЫБОР
| КОГДА ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| ТОГДА Реализации.Реализация = (ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг))
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ)
написать:
|ПО ПродажиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| И Реализации.Реализация = ПродажиОбороты.Регистратор
|
|
11
Прохожий
19.10.25
✎
20:38
|
(9, 10) Да, так интересно
|
|