Я хочу написать запрос в хранимой процедуре со многими фильтрами, но я хочу избежать динамического SQL.
Скажем, мои параметры могут принимать значение null (@filter1, @filter2, @filter3...). Один из способов, которым я мог бы решить это:
SELECT col1, col2, col3
FROM table
WHERE col1 = ISNULL(@filter1, col1)
AND col2 = ISNULL(@filter2, col2)
AND col3 = ISNULL(@filter3, col3)
Результат этого будет отфильтрован соответствующими фильтрами, если не равен нулю. Вопрос: 1) Это хорошая практика? 2) Оптимизирует ли оптимизатор col1 = col1 или это повлияет на производительность запроса?