Я хочу написать запрос в хранимой процедуре со многими фильтрами, но я хочу избежать динамического SQL.
Скажите, что мои параметры обнуляются (@ 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 или это повлияет на производительность запроса?