Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server não usa um índice comparando data e hora para não nulo


Isto é normal. Ele não usará o índice a menos que o predicado seja seletivo o suficiente para garantir isso.

Parece que a grande maioria dos registros não é NULL, então, em vez de encontrá-los por meio do índice não clusterizado, ter que fazer muitas pesquisas de favoritos e E/S aleatórias para recuperar o restante das colunas para retornar, é mais rápido e eficiente para basta verificar todo o índice clusterizado.

Você pode usar FORCESEEK para forçar o comportamento que você diz que quer. Você provavelmente descobrirá que o tempo gasto e as estatísticas de E/S aumentam em comparação com a varredura de índice clusterizado.
SET STATISTICS IO ON

SELECT * FROM 
YourTable WITH (FORCESEEK) 
WHERE YourCol IS NOT NULL