Перейти к содержимому

Проверять пустой результат запроса методом Пустой()

Директивный

v8std#std487

#запросы#производительность

Используйте метод Пустой(), чтобы проверить, есть ли выбранные строки в результате запроса. Так не будет тратиться время на выгрузку результата в таблицу значений.

Выбрать() и Выгрузить() материализуют весь результат (для Выбрать() — с дополнительной служебной обработкой), хотя для ответа «есть ли строки» достаточно факта наличия. На больших выборках разница ощутима, а в горячих местах (проведение, обмены) — критична.

Ещё одна форма того же анти-паттерна — проверка через выгрузку:

Пустой() экономит выгрузку, но сам запрос выполняется полностью. Если нужен только факт наличия, упростите и его: ПЕРВЫЕ 1, без УПОРЯДОЧИТЬ ПО и ИТОГИ — СУБД остановится на первой найденной строке, а не соберёт и отсортирует всю выборку ради ответа «да/нет».

Если данные после проверки всё равно нужны — не выполняйте запрос дважды (Пустой() + повторный Выполнить().Выбрать() хуже, чем одна выборка). Выполните запрос один раз и проверяйте Выборка.Следующий() или Таблица.Количество():

Пустой() — для случая, когда нужен только факт наличия строк.