• ChrisM@Work (10/8/2015)


    Greg Edwards-268690 (10/8/2015)


    NOT EXISTS, from what I understand, is a simple Boolean check.

    Aggregates must first gather all results.

    I am not at all surprised it is generally faster.

    Many times I found it to take a user query that churned, sometimes never finishing, into one that returned results very quickly.

    A very good item to have in your toolbox.

    Absolutely - but I've also seen Scott's suggestion of a derived table with aggregation to leave an EXISTS check in the dust. It depends on the shape of the data. EXISTS almost always wins when a) the searched column is a long way from unique or b) you have a small number of probes into a much larger probed table.

    Exactly. A simple boolean check could take billions of I/Os, and an aggregate almost none, it just depends on the specific table and how it is set up.

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.