Dit is normaal. Het zal de index niet gebruiken tenzij het predikaat selectief genoeg is om het te rechtvaardigen.
Het klinkt alsof de overgrote meerderheid van de records niet NULL zijn, dus in plaats van deze te vinden via de niet-geclusterde index, moet je veel bladwijzerzoekopdrachten en willekeurige I/O uitvoeren om de rest van de kolommen op te halen om terug te keren, het is sneller en efficiënter om scan gewoon de hele geclusterde index.
U kunt FORCESEEK
. gebruiken om het gedrag te forceren dat u zegt dat u wilt. U zult waarschijnlijk merken dat de tijd die nodig is en de I/O-statistieken door het dak gaan in vergelijking met de geclusterde indexscan.
SET STATISTICS IO ON
SELECT * FROM
YourTable WITH (FORCESEEK)
WHERE YourCol IS NOT NULL