Я бы проверил, какие поля могут быть заполнены вместе во внешнем интерфейсе.
Для хранимого процесса основная цель - не иметь SQL с конкатонациями в нем.
В sproc я склонен использовать строку операторов isnull для этого, чтобы использовать параметр или значение поля, если параметр равен нулю.
как вы говорите, это не новый трюк, но он работает и намного быстрее, чем генерирует новый sql при каждом выполнении. Он также имеет легко предсказуемый план выполнения.