Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Guilty Crown
0 / 0 / 0
Регистрация: 04.09.2017
Сообщений: 6
1

Разница между двумя вариантами написания запроса

20.09.2017, 10:59. Просмотров 290. Ответов 6
Метки нет (Все метки)

Добрый день.

Интересует разница между двумя вариантами написания запроса.
По замерам производительности время выполнения одинаковое. Может есть еще какие-то тонкости, о которых я не в курсе?

Первый вариант:
1C
1
2
3
4
5
6
7
8
9
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Количество,
    РеализацияТоваровУслугТовары.Цена,
    РеализацияТоваровУслугТовары.Сумма
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Контрагент
Второй вариант:
1C
1
2
3
4
5
6
7
8
9
10
11
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Количество,
    РеализацияТоваровУслугТовары.Цена,
    РеализацияТоваровУслугТовары.Сумма
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        ПО РеализацияТоваровУслугТовары.Ссылка = РеализацияТоваровУслуг.Ссылка
ГДЕ
    РеализацияТоваровУслуг.Контрагент = &Контрагент
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2017, 10:59
Ответы с готовыми решениями:

Prototype Какая разница между двумя вариантами наследования?
Есть два варианта прототипного наследования. Интересует, какая между ними разница(типа плюсы и...

Разница между вариантами цикла
Занимаюсь по книге Шилдт Г. - Java 8. Руководство для начинающих - 2015. Прохожу цикл FOR, был...

Выбор между двумя Б/У вариантами.
добрый вечер уважаемому сообществу! помогите, пожалуйста, определиться с выбором. средств на...

В чем разница между этими вариантами установки?
В чем разница?

В чем разница между вариантами создания DataRow?
Есть у Троелсена пример // Добавить несколько строк в таблицу Inventory. DataRow carRow =...

6
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,781
20.09.2017, 13:12 2
Guilty Crown, результат запроса будет одинаковый, но первый вариант предпочтительнее по ресурсоемкости: если использования какой-либо таблицы в запросе можно избежать - то лучше так и сделать.
В запросе выбираются поля только табличной части документа Товары в обоих случаях. При этом в первом варианте отбор по Контрагенту устанавливается через Ссылку на сам документ. А во втором варианте таблица документа РеализацияТоваровУслуг - лишняя, просто отбор устанавливается напрямую.
1
Guilty Crown
0 / 0 / 0
Регистрация: 04.09.2017
Сообщений: 6
20.09.2017, 21:35  [ТС] 3
Всегда писал запросы как в первом варианте, а у Хрусталевой встретил второй вариант. Ну и конечно возник вопрос, зачем же она такой запрос делает?
0
Tklwegsd
Эксперт 1С
744 / 543 / 184
Регистрация: 24.07.2013
Сообщений: 1,898
20.09.2017, 22:48 4
Без разницы, первый запрос все равно будет преобразован во второй, так как для получения поля через точку

РеализацияТоваровУслугТовары.Ссылка.Контрагент

нужно соединение с основной таблицей документа.
Здесь можно еще подумать над тем, какое соединение предпочтительнее ВНУТРЕННЕЕ или ЛЕВОЕ.
Платформа, по-моему, подставит ЛЕВОЕ.
1
Yanush
159 / 156 / 61
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
21.09.2017, 19:44 5
При использовании первого варианта будет добавлено неявное левое соединение со второй таблицей (так как используется "разыменование" через точку, как упомянули выше).

SQL
1
2
3
4
5
6
7
8
9
SELECT
T1.Номенклатура,
T1.Количество,
T1.Цена,
T1.Сумма
FROM Документ.РеализацияТоваровУслуг.Товары T1
LEFT OUTER JOIN Документ.РеализацияТоваровУслуг T2
ON T1.Ссылка = T2.Ссылка
WHERE T2.Контрагент = 0x843700252267ECDC11E79EE9BACD13BC
На сайте итс есть консоль запросов с возможностью отображения плана запроса и итогового SQL запроса, в который преобразуется одинэсовский. Если интересно - можете скачать. Называется - ИнструментыРазработчикаКонсольЗапросов.
https://its.1c.ru/db/metod8dev#content:4500:hdoc
2
Guilty Crown
0 / 0 / 0
Регистрация: 04.09.2017
Сообщений: 6
22.09.2017, 12:55  [ТС] 6
Правильно я понимаю, что без разницы, какой я запрос использовал, так как запрос на уровне SQL будет выглядеть одинаково в обоих случаях?
С консолью запросов знаком давно и использую в работе. А как в ней увидеть итоговый SQL запрос, не знаю. Не подскажите?
0
Yulunga
349 / 246 / 66
Регистрация: 22.04.2013
Сообщений: 1,629
Записей в блоге: 1
Завершенные тесты: 1
22.09.2017, 13:34 7
Guilty Crown, это не та консоль запросов
ищите по "инструменты разработчика" а там "консоль запросов". там же есть видео(без звука, секунд 30-60), где показано как это делается(должны быть админские права на доступ к директории, в которой установлена 1с)
0
22.09.2017, 13:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2017, 13:34

Объявление строки. В чем разница между предложенными вариантами
;---------------------------------------------------------- menu db '1 - Print hello',13,10 ...

Выбор оперативной памяти между двумя вариантами
Здравствуйте! Есть материнская плата с шиной 2400мГц и процессор, поддерживающий оперативную...

Делегаты. Разница между двумя двумя выражениями
Объясните, пожалуйста есть ли разница между двумя двумя выражениями. obja.activate += new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru