ISNULL() in de select-clausule heeft een verwaarloosbare invloed op de prestaties. In de waar-clausule daarentegen kan het een zeer grote impact hebben op de prestaties, omdat het de optimizer verhindert een index op die kolom te gebruiken.
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.
Dus, wanneer u isnull() gebruikt in een waar-clausule, evalueer dan of het verhindert dat de query-optimizer een index gebruikt. Als dat zo is, overweeg dan om een berekende kolom te maken met het resultaat if isnull(col1, 0) en indexeer de berekende kolom en gebruik deze in uw waar-clausule.