• Your query is using bitmap filters.

    a bitmap filter is a way for sql server to eliminate rows earlier in the execution pipeline. This is a powerful performance optimization.

    Bitmap filters will always show up in two places in your query plan, once for the build, once for the probe.

    The most common case will include a hash join. On the build side of the hash join, you will find the build for the bitmap filter (just like a hash join, the bitmap filter must consume all imput before the probe side can start).

    consider this contrived and grossly oversimplified example:

    table cats (cat_id int...)

    table books (book_id, cat_id ...)

    select books.* from books b inner join cats c

    on b.cat_id = c.cat_id where c.cat_id in (1,33,51,79,91)

    Sql server may decide to scan the cats table, and build a bitmap filter.

    Through SQL Server magic, the bitmap filter realizes that all the

    values of cat_id are odd. When Sql server does a scan on the books

    table, it tests each cat_id against the filter. Any values of cat_id that

    are even numbers can't possibly match when we get to the hash join,

    so we eliminate those rows before they even make it to the query pipeline.

    bitmap filters are a good thing, but typically only show up in plans with large row counts (DW queries, etc).