ISNULL() w klauzuli select ma znikomy wpływ na wydajność. Z drugiej strony, w klauzuli where może mieć bardzo duży wpływ na wydajność, ponieważ uniemożliwia optymalizatorowi użycie indeksu w tej kolumnie.
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.
Tak więc, używając isnull() w klauzuli where, oceń, czy uniemożliwia to optymalizatorowi zapytań użycie indeksu. Jeśli tak, rozważ utworzenie kolumny wyliczanej z wynikiem if isnull(col1, 0) i zindeksuj kolumnę wyliczaną i użyj jej w klauzuli where.