Questo thread è simile, anche se non esattamente su MySQL. Secondo il test mostrato lì:
IS NULL
è più efficiente in quanto non richiede una scansione.
La ricerca è generalmente più veloce di una scansione in quanto include solo i record idonei, mentre la scansione include ogni riga. È spiegato in modo più dettagliato qui .
Un'altra differenza (sebbene non sia la prestazione) è la loro sintassi di negazione:
IS NOT NULL /* using NOT operator */
! ISNULL() /* using exclamation mark */