ISNULL() i select-klausulen har försumbar inverkan på prestandan. I where-satsen å andra sidan kan det ha en mycket stor inverkan på prestandan, eftersom det hindrar optimeraren för att använda ett index på den kolumnen.
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.
Så när du använder isnull() i en where-klausul, utvärdera om det förhindrar frågeoptimeraren från att använda ett index. Om så är fallet, överväg att skapa en beräknad kolumn med resultatet if isnull(col1, 0) och indexera den beräknade kolumnen och använd den i din where-klausul.