• You should get the same performance either way. The SELECT list will never get processed in the EXISTS predicate; you can put anything you want there. EXISTS checks for existence of a row, not whether something in the SELECT list is satisfied. Check out the following two batches; notice any difference in the query plans? Neither do I.

    if exists (select name+'abcd' from sys.databases)

    print 'abcd'

    go

    if exists (select * from sys.databases)

    print 'abcd'

    go

    I've taken this one step further in the past by creating a CLR UDF that sleeps the thread for 30 seconds every time it's called. Calling that function in the SELECT list of an EXISTS predicate has absolutely no effect on performance. Try it yourself if you believe this really has any impact.

    --
    Adam Machanic
    whoisactive