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