Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 07:03

Специфика работы запросов (1с 8.2)

Автор Qelael, 28 сен 2015, 13:44

0 Пользователей и 1 гость просматривают эту тему.

Qelael

Добрый день!
Хочу понять механизм обработкиа 1С-ом запросов. Вот допустим есть запрос
ВЫБРАТЬ РАЗЛИЧНЫЕ
УС.Ссылка как Ссылка
ИЗ
Документ.УстановкаСкидокПоМаркетинговымМероприятиям.СкидкиНаценки КАК УС
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураСегмента как НС
ПО УС.СкидкаНаценка.СегментНоменклатурыПредоставления=НС.Сегмент
ГДЕ
&ТекущаяДата МЕЖДУ УС.ДатаНачала и УС.ДатаОкончания
и Ссылка.МаркетинговоеМероприятие <> ЗНАЧЕНИЕ(Справочник.МаркетинговыеМероприятия.ПустаяСсылка)
И НС.Номенклатура=&Номенклатура

Вопрос - что произойдет дальше:
1) Таблицы соединятся и затем наложится отбор по номенклатуре
2) На таблицу НС наложится отбор, а затем произойдет соединение.




vitasw

Отбор всегда накладывается на результирующую таблицу.
Ограничения в параметрах виртуальных таблиц регистров определяет условия выборки данных. Грубо говоря сначала отбор, потом результат.

cska-fanat-kz

В вашем случае - без разницы.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Qelael

Цитата: cska-fanat-kz от 28 сен 2015, 13:56
В вашем случае - без разницы.

А почему? Ведь если сначала соединение - то соединяются две большие таблицы, а затем из них выбирается нужная строка, что долго.
А если сначала отбор, то соединяется только одна строка, что быстрее, разве нет?

cska-fanat-kz

Цитата: Qelael от 28 сен 2015, 14:15
Цитата: cska-fanat-kz от 28 сен 2015, 13:56
В вашем случае - без разницы.

А почему? Ведь если сначала соединение - то соединяются две большие таблицы, а затем из них выбирается нужная строка, что долго.
А если сначала отбор, то соединяется только одна строка, что быстрее, разве нет?

ааа, вы в этом смысле.
а я про результат.

сперва будет соединение, потом фильтр ГДЕ.
для того, чтобы сперва сработал фильтр нужен вложенный запрос или временная таблица.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

vitasw

Цитата: cska-fanat-kz от 28 сен 2015, 14:27для того, чтобы сперва сработал фильтр нужен вложенный запрос или временная таблица.

:) а смысл? быстрее параметров в виртуальной таблице ничего нет

дфтын

vitasw, Кстати, на курсах Эксперт 1С,крутые курсы и экзамены еще круче, там говорят, что пользоваться виртуальными таблицами очень даже не надо. ЧТо обращение с условиями к просто таблице - оно правильнее.

vitasw

Цитата: дфтын от 28 сен 2015, 16:13vitasw, Кстати, на курсах Эксперт 1С,крутые курсы и экзамены еще круче, там говорят, что пользоваться виртуальными таблицами очень даже не надо. ЧТо обращение с условиями к просто таблице - оно правильнее.

:D Ой что-то вы очень не то поняли. Как, стисняюсь спросить, вы будете получать остатки не используя виртуальную таблицу остатков? Будете считать по физической таблице от царя гороха?
Может вы имели ввиду "Временную" таблицу?

дфтын

Почему от царя гороха? вообще то итоги у регистра можно рассчитывать. Или вы думаете таблица виртуальная как то по другому их считает?
Ради эксперимента рекомендую в профайлере сикульном посмотреть какой запрос формируется к серверу. очень удивитесь.

vitasw

Цитата: дфтын от 28 сен 2015, 16:22Или вы думаете таблица виртуальная как то по другому их считает?
Вообще-то да, по другому. Платформа однозначно очень по-разному будет реагировать на попытку подсчета остатков по физической таблице и по виртуальной таблице остатков.
http://its.1c.ru/db/metod8dev/content/2726/hdoc

Теги: запросы 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск