Ter um índice filtrado em uma coluna melhora as consultas com uma cláusula WHERE que é o oposto da condição do filtro?
Como o índice filtrado especifica o que não retornar, ele reduz o número de registros a serem pesquisados?
Exemplo:
CREATE TABLE MyTable
(
ColumnA INT PRIMARY KEY CLUSTERED,
ColumnB INT NULL
)
CREATE NONCLUSTERED INDEX IX_MyTable_Filtered_ColumnB
ON MyTable (ColumnB)
WHERE ColumnB IS NOT NULL
O índice deve melhorar esta consulta:
SELECT ColumnA
FROM MyTable
WHERE ColumnB IS NOT NULL
Isso fará alguma diferença para este?
SELECT ColumnA
FROM MyTable
WHERE ColumnB IS NULL
Não. Você provavelmente receberá um erro se tentar forçar sua consulta 'IS NULL' a usar seu índice filtrado com uma dica de índice.