Използване на локални променливи при WHERE филтърът предизвиква ПЪЛНО СКАНИРАНЕ НА ТАБЛИЦА. Тъй като SS не знае стойностите на локалните променливи по време на компилиране. Така той създава план за изпълнение за най-големия мащаб, който може да бъде наличен за колоната.
За да предотврати проблема с производителността, SS трябва да знае стойностите на променливите по време на компилиране. Дефиниране на SP и предаване на тези локални променливи като параметър е едно от решенията на проблема. Друго решение е използването на sp_executesql и отново предаване на тези локални променливи като параметър...
Или можете да добавите OPTION ( RECOMPILE ) в края на вашия sql оператор, за да направите вашите локални променливи да бъдат компилирани. Това ще реши проблема с производителността.