Home » 1С Предприятие 8.х SQL » 1Cv8: Зачем использовать виртуальные таблицы в запросах, взгляд изнутри СУБД
google




1Cv8: Зачем использовать виртуальные таблицы в запросах, взгляд изнутри СУБД

При написании запросов на получение Оборотов, Остатков и прочего рекомендуется использование Виртуальных таблиц, при этом условия по возможности следует задавать через параметры виртуальных таблиц. Рассмотрим почему так. 

ПРИМЕЧАНИЕ: Запросы будут приводится для PostgreSQL, в случае использования других СУБД суть будет прежней, возможно некоторое отличие текста, связанное с нотацией той или иной СУБД.

Виртуальная таблица Обороты

Сделаем запрос на получение данных используя виртуальные таблицы

Использование параметров в Виртуальной таблице порождает код на SQL:

Теперь вынесем фильтр по Организации наружу, уберем из параметров ВТ и добавим в секцию ГДЕ

Получаем запрос вида:

По тексту запроса можно понять следующее: при использовании параметров ВТ условие по Организации отрабатывается в момент первичного получения данных, до проведения группировки и наложения условия по наличию оборота. Т.о. постобработка ведется уже отфильтрованных данных, которых может быть значительно меньше общего количества записей в выборке. Вынесение условия по Организации вне ВТ приводит к не оптимальному запросу. GROUP BY + HAVING обрабатывают большой массив данных, расходуя лишние ресурсы.

Виртуальная таблица СрезПоследних

Запрос на получение среза используя Параметры Виртуальных таблиц

Преобразуется в запрос:

Вынесем условие по Организации в секцию ГДЕ

Получаем запрос

Из запросов видно:  при использовании Параметров ВТ обрабатывается меньший объем данных на каждом из этапов получения данных.


Posted on by Ушаков Сергей
Categories: 1С Предприятие 8.х,SQL Метки: ,



Добавить комментарий

Войти с помощью: 

Google




Социальные сети


Я в Twitter
Яндекс.Поиск
Поиск обычный
Счетчики
Рейтинг@Mail.ru Яндекс.Метрика