ISNULL() nella clausola select ha un'influenza trascurabile sulle prestazioni. Nella clausola where, invece, può avere un enorme impatto sulle prestazioni, poiché impedisce all'ottimizzatore di utilizzare un indice su quella colonna.
where isnull(col1, 0) = 0 -- unable to use index, because every
-- row has to be evaluated
where col1 = isnull(@myVar, 0) -- index will be used, since isnull(@myVar, 0)
-- returns the same static value for every row and
-- not every row has to be evaluated by the function.
Pertanto, quando si utilizza isnull() in una clausola where, valutare se impedisce a Query Optimizer di utilizzare un indice. In tal caso, considera la creazione di una colonna calcolata con il risultato if isnull(col1, 0) e indicizza la colonna calcolata e usala nella tua clausola where.