У мене запит на великій таблиці, який виглядає приблизно так:
declare @myIdParam int = 1
select *
from myTable
where (@myIdParam is null or myTable.Id = @myIdParam)
Існує кілька подібних умов, як це у пункті де, і також є багато приєднань, але це короткий підсумок.
Ефективно, якщо @myIdParam недійсний, ми не хочемо обмежувати результати за допомогою цього параметра.
Я не DB Pro, але з моїх тестів, схоже, ця перевірка NULL робиться для кожного запису і не оптимізована жодним чином.
Якщо я видаляю нульову перевірку і припускаю, що параметр не є нульовим, запит миттєво повертається. В іншому випадку це займає до десяти секунд.
Чи є спосіб оптимізувати це, щоб перевірка робилася лише один раз під час виконання?
OPTION(RECOMPILE)