• The index isn't covering and doesn't even support most of the where clause. Unless a very, very, very, very small portion of the table qualifies for that filtered index, it's extremely likely that SQL will pick a different index, one that supports more of the where clause or one that covers the query, even if it means scanning the table.

    Plus the predicate in the query and the predicate in the index don't match.

    Query:

    AND ([Checklists].dbo.[DesignChanges].[Pending] Is Null OR [Checklists].dbo.[DesignChanges].[Pending] = '' )

    Index

    CREATE NONCLUSTERED INDEX [Checklists]

    ON DesignChanges(Pending)

    WHERE (Pending IS NULL AND Pending =' ')

    In short, the chances of SQL using a single column nonclustered index (that it has to scan, there's no seekable predicate) followed by key lookups for all the rows, followed by a secondary filter for that query is pretty much zero.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass