Обращение к виртуальной таблице без параметров (VirtualTableCallWithoutParameters)¶
Тип | Поддерживаются языки |
Важность | Включена по умолчанию |
Время на исправление (мин) |
Теги |
---|---|---|---|---|---|
Ошибка |
BSL |
Важный |
Да |
5 |
sql standard performance |
Описание диагностики¶
При использовании виртуальных таблиц в запросах, следует передавать в параметры таблиц все условия, относящиеся к данной виртуальной таблице.
Не рекомендуется обращаться к виртуальным таблицам при помощи условий в секции ГДЕ и т.п.
Такой запрос будет возвращать правильный (с точки зрения функциональности) результат, но СУБД будет намного сложнее выбрать оптимальный план для его выполнения. В некоторых случаях это может привести к ошибкам оптимизатора СУБД и значительному замедлению работы запроса.
Примеры¶
Например, следующий запрос использует секцию ГДЕ
запроса для выборки из виртуальной таблицы:
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки()
|ГДЕ
| Склад = &Склад";
Рекомендуется ограничивать количество выбираемых записей на самом раннем этапе обработки запроса. Для этого следует передать условия в параметры виртуальной таблицы.
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад)";
Источники¶
- Источник: Стандарт: Обращения к виртуальным таблицам
- Источник: Стандарт: Эффективное обращение к виртуальной таблице «Остатки»
- Источник: Рекомендация 1С: Использование параметра Условие при обращении к виртуальной таблице
Сниппеты¶
Экранирование кода¶
// BSLLS:VirtualTableCallWithoutParameters-off
// BSLLS:VirtualTableCallWithoutParameters-on
Параметр конфигурационного файла¶
"VirtualTableCallWithoutParameters": false