Při sestavování dotazu neví, jakou hodnotu budou mít proměnné. Můžete zkusit OPTION (RECOMPILE) .
Předpokládám, že přidání AND klauzule v dotazu (i když logicky není vůbec selektivnější) musí optimalizátora uvést v omyl, aby odhadl dotaz s větší selektivitou, čímž vám poskytne plán, který jste chtěli!
V komentářích uvádíte, že verze bez ExceptionDate = ExceptionDate se odhaduje na 88234.8 řádky a verzi s 8823.48
Obecně se při absenci použitelných statistik SQL Server vrací zpět k heuristice v závislosti na typu operátoru porovnání v predikátu.
Předpokládá, že > predikát vrátí například 30 % řádků a že = predikát vrátí 10 % řádků, takže to vypadá, že to pouze aplikuje přímo na výsledek prvního odhadu. Zajímavé, že nebere v úvahu fakt, že rovný je zde proti samotnému sloupci!
c.f. Doporučené postupy pro správu statistik – Vyhněte se použití místních proměnných v dotazech