E 'normale. Non utilizzerà l'indice a meno che il predicato non sia sufficientemente selettivo da giustificarlo.
Sembra che la stragrande maggioranza dei record non sia NULL, quindi invece di trovarli tramite l'indice non cluster, quindi dover eseguire un sacco di ricerche di segnalibri e I/O casuali per recuperare il resto delle colonne per restituirlo è più rapido ed efficiente scansiona l'intero indice cluster.
Puoi usare FORCESEEK
per forzare il comportamento che dici di volere. Probabilmente scoprirai che il tempo impiegato e le statistiche di I/O superano il tetto della scansione dell'indice cluster.
SET STATISTICS IO ON
SELECT * FROM
YourTable WITH (FORCESEEK)
WHERE YourCol IS NOT NULL